2009-11-07 166 views
2

什麼編碼技術可以讓我區分黑白圖像位圖中的圓形,矩形和三角形?用於區分圓形矩形和三角形的技術?

+0

能否請您提供更多的信息?將給定的位圖保證包含一個圓或三角形?它可以包含其他形狀?它可以包含多個圈子嗎?形狀可以出現在位圖的任何位置,還是可以保證延伸到定界符?任何進一步的信息將是非常有用的。 – csj

+0

位圖必須只有一個形狀 – Gamal

+1

查看您在本主題中的評論,這聽起來像是您希望在編碼級別獲得更多幫助。如果這是真的,那麼最好讓你的問題更抽象,更具體:你用什麼語言編程?你有什麼代碼?你到底在哪一步失敗? – BalusC

回答

1

如果噪音足夠低,提取曲線,近似可以用於:對每個形狀選擇參數給出最小誤差(最小二乘法,他可以幫助在這裏),然後比較這些錯誤......

如果圖像是嘈雜的,我會考慮霍夫變換 - 它可以用來檢測具有少量參數的形狀,如圓形(對於矩形和三角形更難)。

+0

圖像嘈雜,我有一個訓練集爲每個形狀 – Gamal

1

只是我頭頂的想法:​​逐像素逐行掃描(像素)圖像。如果遇到第一個白色像素(假設它具有黑色背景),則將其位置作爲起始點,然後查看下一個白色像素周圍八個像素的每個方向。如果找到相鄰的第二個像素,則可以在這兩個像素之間建立方向矢量。

現在重複此操作,直到您的矢量方向發生變化(或變化高於某個閾值)。保持更改前的最後一個點作爲第一行的終點,併爲下一行重複該過程。

然後計算兩條線之間的角度並存儲它。現在跟蹤第三行。計算第二行和第三行之間的角度。

如果兩個角都是矩形的,你可能找到了一個矩形,否則你可能找到了一個三角形。如果找不到任何直線,則可以斷定您找到了一個圓圈。

我知道該算法有點粗略,但我認爲(有一些改進),它可以工作,如果你的圖像的質量不是太差(太多的噪音,行中的差距等)。