我有兩個代碼(.NET)的位圖。我想在大圖像(乾草堆)中搜索小圖案(針)。如何才能做到這一點?在乾草堆位圖中匹配圖案/針(最好是位圖)?
回答
這取決於您是否在按位模式進行「精確」匹配或僅進行近似(模糊)圖像匹配。如果你正在做一個精確的匹配,只需將位圖作爲一個通用的2D數據數組搜索。
一個簡單但非常容易實現的精確匹配可以在N * M時間中進行,其中N是乾草堆中的像素數量,M是針中的像素數量。由於Haystack的大小是(S,T),Needle Bitmap的大小是(U,V),所以可以在Haystack上迭代Y = [0,T-V)。對於每個位置,您可以查看與Needle [{X,Y},{X + U,Y + V})大小相同的2D子陣列,並將其與Needle [{0,0},{ U,V})座標。
你可以通過Image Registration來做到這一點,雖然我不知道一個(好的).NET庫可以直接用於這個。
如果你願意使用C++,Insight Toolkit有很多工具可以幫助你做到這一點,包括你的「乾草堆」不能精確匹配「針」(即:「模糊」搜索/匹配)。
我決不是圖像處理方面的專家。只是在這裏想出一個想法:)
說你看你的針的像素線。這一行可以爲計算給定行的校驗和提供一個基礎,所以我們稱之爲指紋。現在,您可以搜索乾草堆中的所有水平線,以獲得相同長度的子集,並使用相同的校驗和。一旦你找到你的橫向候選人,你可以檢查每個垂直匹配。
這個算法的問題顯然是它的速度。在你的水平指紋上有很多匹配的情況下(例如,如果你選擇了最上面的一行,它將全部是黑色的 - 在乾草堆中顯示出很多模式),這是O(可怕的),所以不知何故你必須選擇一個具有很好,不同行爲的指紋。
我敢肯定有很多更好的方法來做到這一點,但我想我會分享我的想法:)
好運
你可能想看看「edge detection」通用這是你正在嘗試做的事。
這兩個鏈接看起來有用,但更多處理色彩重合比圖像處理:
的你想要做什麼的要點是:
- 將「查找」圖像切割成最小尺寸
- 反轉的「查找」圖像,並確保該邊緣作爲清潔(具有高梯度)儘可能
- 掃描「目標」圖像並檢測所有邊緣
- 細分「目標」圖像劃分爲段「找到「大小(加上一些錯誤),並只採取邊緣數量較多的區域
- 」目標「中的Foreach部分XOR部分上的」查找「圖像(根據需要遞增)並查看結果閾值低於您檢測到的閾值
所以基本知識是你剪輯你的「查找」圖像,在對其進行垂直(對於異或),找到目標圖像中的所有邊,然後將XOR映射應用於這些區域並找到最高匹配百分比。
或者,如果圖像足夠小,則可以「滑動」應用相同的技術,反轉查找圖像,並將其滑過「目標」圖像尋找匹配。
這些技術的主要問題是什麼構成了「匹配」,它通常不會是100%的匹配,並且當發生這種情況時你必須有一些代碼來處理。
如果你需要這樣做,我建議找一個已經做到這一點的庫,比如裏德所建議的。如果你想推出自己的,花一些時間在維基百科和Codeproject上看圖像操作庫。
- 1. 在乾草堆裏發現針,其中針是針陣列
- 2. 與兩個匹配和非匹配圖案至REGx圖案
- 3. 不能匹配乾草堆彈性搜索中的數字
- 4. Scala的佔位符陣列,用於圖案匹配
- 5. Google Maps最後的好地圖位置
- 6. 縮放矩形以匹配位圖
- 7. task.execute url與位圖不匹配
- 8. 匹配圖案差`([,] +)`和`([,])+`
- 9. Erlang圖案匹配性能
- 10. 夫特圖案匹配
- 11. SED插入匹配圖案
- 12. 將位圖縮放到另一個位圖中,最好採用「手動」方式?
- 13. 在比較圖像之前匹配圖像位置
- 14. 如何在C#中旋轉位圖,並最終得到位圖?
- 15. ImageJ圖像堆棧移位
- 16. 針在乾草堆中的數組在PHP中
- 17. 列表視圖,位圖和FastScroll怪堆分配
- 18. Android空指針onDraw位圖圖片
- 19. 位圖作爲指針
- 20. Django-cms乾草堆搜索 - 佔位符內容
- 21. 比較兩個相互匹配的位圖匹配as3
- 22. 如何使用preg_match_all在乾草堆中找到複數針?
- 23. XML位圖渲染不好?
- 24. 更好的.NET API位圖
- 25. 谷歌圖表API的折線圖:單位不匹配點
- 26. 將旋轉的位圖匹配到拼貼圖像
- 27. 麻煩匹配圖案或在Python
- 28. 匹配表中的任何圖案?
- 29. 位圖位圖= BitmapFactory.decodeResource(this.getResources(),R.drawable.picture1
- 30. HBITMAP *位圖到.net位圖
我想做一個模糊匹配...我相信這是可用的我正在使用的AForge框架? – Ropstah 2009-12-21 19:30:34
我真的不知道從模糊邏輯上的兩個位圖到哪裏去:) – Ropstah 2009-12-21 19:33:14
那麼,與模糊匹配,你想縮放/旋轉/允許歪斜? – Adisak 2009-12-21 19:51:45