OpenCV 能準確偵測紙張嗎?過濾輸出以獲得更清晰的結果
使用 OpenCV 進行方形檢測對於影像處理應用程式來說是一個有用的工具。然而,在處理紙張時,過濾輸出以獲得更精確的結果至關重要。
在討論的原始實作中,雖然方形偵測成功運作,但輸出可能顯得混亂。為了解決這個問題,讓我們探索提供的程式碼並討論潛在的改進。
原始程式碼
在提供的程式碼中,函數 findSquaresInImage 偵測輸入影像中的方塊。它採用具有不同閾值水平的 Canny 邊緣檢測,並在生成的二值圖像中查找輪廓。類似正方形(有四個邊和一個凸形狀)的輪廓將被進一步處理,以檢查其角度並確保其類似正方形的品質。
濾波輸出
儘管透過這些措施,輸出仍可能包含雜訊或無關輪廓。要提高方形偵測的準確性並過濾掉不需要的結果,請考慮以下步驟:
1.面積閾值:
適當的面積閾值可以幫助消除不太可能代表紙張的小輪廓。透過設定特定面積閾值,您可以從偵測到的方塊中排除小於特定尺寸的物件。
2.長寬比濾波:
紙張通常有長方形長寬比。透過計算每個偵測到的正方形的長寬比並排除那些比例與矩形形狀顯著偏差的正方形,可以減少誤報結果。
3.凸性過濾:
確保偵測到的方塊是凸的。凹形輪廓或有凹痕的正方形可以根據其凸度等級來消除。
4.周界閾值:
考慮應用周界閾值。這可以幫助識別週長足夠大的正方形,這是紙張的更典型特徵。
增強紙張檢測
透過結合這些過濾技術,紙張的準確性片材檢測可以得到極大的改善。此外,為了識別圖像中最大的正方形(最有可能代表一張紙),可以引入一個函數來計算每個正方形的面積並選擇面積最大的正方形。
結論
透過實作這些濾波技術,您可以細化方形偵測演算法的輸出,以有效地偵測紙張。這使得更準確的影像處理應用成為可能,例如文件掃描或用於減少傾斜的透視變換。
以上是如何提高 OpenCV 偵測紙張和濾除雜訊的準確性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!