4

我必須在圖像中找到十字。我所知道的是每個紅場的確切位置。現在我必須決定是否在廣場內有十字架。什麼是最好和最快的方式來做到這一點?我正在使用OpenCv/C++!那麼,我可以嘗試使用OpenCv的SVM?但它速度快嗎?你還有其他建議嗎?圖像中的交叉檢測

+0

你想要:只有十字架出現? (作爲圖像中唯一的對象),還是每個十字架的一組座標?我會建議一些_clever_減法和一些blob檢測。 – Sonaten

回答

5

如果你真的有每個數字盒的中心座標,你可能可以調整圖像採集一點,這應該是一個可行的任務。 我在這裏看到的問題是,您的圖像中有一個亮度梯度,您應該通過拍攝更好的照片或使用大高斯濾鏡和圖像相減來消除亮度梯度。 否則我不確定你會發現一個很好的亮度閾值來分隔交叉和非交叉。

您可以使用的另一種方法是計算像素的方差。這給你一個很好的本地測量,不管是否黑暗的筆傳播你的像素分佈。快速測試看起來很有希望

lotto processing

請注意,我並沒有把盒子的真正位置。我只是將你的圖像分成了大小相同的區域,這對於盒子/子盒子的結構來說並不是真正正確的。因爲它有一些誤報,因爲每個左上角都有紅色的三角形,並且由於一些重疊的十字。

因此,這裏是我所做的:

  1. 將您的圖像,而紅色通道,並使它成爲灰度圖像。
  2. 以半徑爲100的高斯過濾此圖像,並從圖像中減去此圖像。
  3. 我把你的圖片分成(7 * 6)x(7 * 2)個子區域。
  4. 計算每個子區域的方差並對上述圖像使用約0.017的方差閾值
  5. 具有較大方差的每個方塊被交叉。
0

如果未檢測到紅色墨水是一個選項,請保持簡單:在紅色區域內積累所有像素,並在「紅色」上累積閾值,即紅色值總和除以總色彩值的商。

5

簡單的解決方案:如果你知道所有盒子的先驗位置,只需計算盒子的平均亮度。帶有標記的盒子將比空盒子暗得多。

+0

你知道如何獲得OpenCv的亮度嗎? – Ben

0

找到rectungles然後做簡單的像素比較。