我已經瀏覽了過去兩天的帖子和示例,並且我已經嘗試過並經過廣泛測試的所有代碼段已被證明是無用的,至少對於我的目的而言是無用的。矢量圖像的圖像比較(基於邊緣檢測)?
我想要做的是比較從牆上或紙上拍下的黑色矢量符號(質量類似於人們可能會說的嚴重掃描圖像),並將其與相同或相似符號的電子版本進行比較存儲在本地並與照片進行比較)。請看附件中的兩張圖片,第一張清晰的圖片(參考圖片)是符號的數據庫版本,第二張圖片是我在一張紙上製作的蹩腳圖片,然後我用iPad拍攝了這張圖片。
我想去的程序如下:
- 兩個圖像加載,然後使用這個微調算法我發現這裏的修改版本修剪:Trimming images with PIL 。我發現,50「閾值」的值和20(在鏈接的腳本參數)的「顯而易見」值給出這些圖像
- 這些圖像隨後將被調整爲相同的尺寸和比較良好的結果
現在爲了比較,我嘗試了大量不同的建議方法,但迄今爲止結果很糟糕。實際上,我可以用比隨機圖像更好的比較結果。我已經嘗試RMS difference comparison基於實際的圖像,它們的邊緣(使用ImageFilter.CONTOUR或ImageFilter.FIND_EDGES的'過濾器'函數創建的),但到目前爲止,沒有任何我在網上找到(儘管我不停地搜索)或在這裏在StackOverflow中給了我體面的結果。
我相信問題出在測試圖像的嘈雜背景下,但我還沒有能夠證明它。有誰知道是否有辦法從這些圖像的邊緣獲取矢量輪廓,並將它們不僅僅作爲圖像而且作爲圖像矢量進行比較? 儘管我蹩腳的繪畫,我發現這兩個圖像是相當相似的,應該有可能得到一個很好的比較。
基於矢量的方法存在問題,您如何處理錯誤的雜散標記或具有不同高寬比的繪製圖像?除了我的答案,如果你能得到規格化的圖像,使用特徵面的光柵化方法(參見wiki)在這裏可能很有用(儘管計算量很大並且需要一些線性代數)。 – Hooked