我試圖做我自己的污點檢測誰將會收到一個實時視頻,並嘗試檢測白紙。 即使是寫在紙上的東西。我需要檢測紙張並且是轉角,因爲我真正想要的是在紙張的每個角落中的紙張上繪製opengl多邊形將成爲多邊形的一個角落。然後我需要紙張的座標來做其他的事情。 所以我需要: - 檢測一個正方形的白色斑點。 - 獲取角膜的座標 - 在白色片上畫一個多邊形。Blob檢測在C(不與OPENCV)
任何ideias我該怎麼辦呢?
我試圖做我自己的污點檢測誰將會收到一個實時視頻,並嘗試檢測白紙。 即使是寫在紙上的東西。我需要檢測紙張並且是轉角,因爲我真正想要的是在紙張的每個角落中的紙張上繪製opengl多邊形將成爲多邊形的一個角落。然後我需要紙張的座標來做其他的事情。 所以我需要: - 檢測一個正方形的白色斑點。 - 獲取角膜的座標 - 在白色片上畫一個多邊形。Blob檢測在C(不與OPENCV)
任何ideias我該怎麼辦呢?
這在很大程度上取決於上下文。例如,假設你:
知道紙張總是大致居中(即,W/2,Y/2總是團塊內部),並且沒有更多的旋轉超過45度(30會更好)
有片圍繞一個合適的邊界,以致於拐角從未觸及的邊緣FOV
能夠(通過當地的方差分析,或者如果你運氣好,背景顏色的支票或亮度)來說明一個點是否在blob內部或外部
內部/外部功能永遠不會失敗(可能除了在邊境靠近附近)
,那麼你可以走在邊境從點線(肯定外)和中央(當然裏面),即使通過平分,並找到一個點 - 一個區域 - 在邊緣。
兩個邊緣點給出一個矩形(二areals給梁),兩個rects給出一個路口(兩束給出較大的面積) - 有你的角落。您應該攜帶檢測不確定性(區域半徑)以驗證角點(另一種不太精美的方法是粗略計算角落的位置,並通過螺旋搜索或醉漢漫步進行查找)。
該算法適合於並行化,只要假設成立,應該是非常快。
所有這一切說,它仍然是一個黑客 - 我同意開卷,爲什麼另起爐竈?如果你有內存或CPU的限制(嵌入式系統等),我相信應該是ARM和嵌入式平臺的OpenCV和e-Vision「lite」端口。 (Areal)很可能與你的「blob」相對應,光束是連接兩個不同點的所有點的線的族,line強度是距離其面積中心點的距離的乘積)
謝謝@Iserni,沒問題英語也不是我的第一語言,我不想使用OpenCV,因爲我試圖改變artoolit的例子和artoolkit中的視頻和opencv是不一樣的,我有一個ideia如何做檢測,閾值圖像,然後binarize,標籤嘗試檢測區域是更明亮或更黑暗然後其他但感謝您的幫助,我會看到 –
我試圖做我自己的blob檢測誰將收到實時視頻,並嘗試檢測白皮書表。
你的第一槍可能是一個簡單的flood-fill。也就是說,選擇一個好的閾值來二值化圖像並應用算法。如果您知道紙張總是比X
明亮並且背景總是比此暗,則閾值可以固定。或者這可以是自適應閾值,例如Otsu's method。 OpenCV免費提供此功能。
如果您需要加快速度,可以使用聯合查找數據結構。
最後,您需要想出一些啓發式的方法來識別角點(例如x/y方向上的四個極值)。
那麼我就需要[...]在了Cornes的座標[...]
那麼你並不需要擺在首位斑點檢測,但角點檢測或者輪廓檢測。對此,OpenCV有一些nice functionality。 如果你不能使用它,我建議像上面那樣對圖像進行二值化處理,並使用哈里斯檢測器來找到物體的角落。
OpenCV's TBB support如果您使用它並且您遇到問題以滿足您的實時要求,它也可能會非常方便。
感謝@moooeeeep像我之前說過的不想使用OpenCV,因爲其他問題,但我會看到如果我可以使用示例 –
@RubenVeiga如何集成OpenCV和ARToolKit?在這裏的答案並不多,但可能他們可能會幫助http://stackoverflow.com/q/2396742/1025391 – moooeeeep
試圖看到這些例子是爲Cpp其他它給我錯誤CvImage –
如果你想描述*爲什麼你不能爲這些有點複雜的任務使用已建立的庫,這將會很有幫助。 – unwind
可以假定對象總是比背景更明亮嗎? – moooeeeep
這應該轉移到DSP! – karlphillip