2010-08-04 21 views
1

我上傳了更好的理解的示例圖像:http://www.imagebanana.com/view/kaja46ko/test.jpgOpenCV的:檢測黑到白的漸變區域中的

在圖像,你可以看到一些掃描線和標記(白色retangle在它的圓圈)。我希望OpenCV沿着應該在5x5左右的指定區域(在通過掃描線描述的示例中)前進。如果該區域包含從黑色到白色的漸變色,我希望OpenCV保存該區域的位置,以便稍後使用它。

最終的結果將是區分標記和其他分隔槽黑白線之間的網格。

是這樣的可能嗎?我搜索了很多,但我只找到了邊緣檢測器,但這不是我想要的,我真的需要檢測黑色到白色的漸變。

在此先感謝。

回答

1

感謝您的回答dnul,但它並沒有真正幫助我解決這個問題。我雖然關於直方圖來解決這個問題,但它不是我想要的。

我通過創建一個40x40矩陣來解決這個問題,該矩陣包含所有3個通道中包含原始像素數據的5x5矩陣。我遍歷每個40px區域,並在每個5px區域的邊界迭代。我檢查了每個像素並保存了較暗的那個,然後存儲了一定的閾值。

迭代後,我有一個粗略的想法,他們是多少黑色像素,所以我檢查他們每個人的所有3個通道中的白色像素的鄰居。然後我標記每個像素並將它們保存到另一個存儲器。

然後我使用ransac算法來構造出這些點的線。它每個標記邊緣構造大約5-20行。然後,我看着彼此相遇的線條,並保存了那些以方角相遇的線條。 我從中得到的4個點是標記的邊緣。

如果你想重現這一點,你必須事先過濾圖像,並應用一個閾值,以便更容易區分黑白像素。

一個樣本圖片,找到後點,構建線之前保存: http://www.imagebanana.com/view/i6gfe6qi/9.jpg

2

通過計算直方圖來過濾掉一些區域是個好主意。 您可以將cvCalcHist用於該任務,然後您可以建立一些閾值以確定黑白像素百分比是否與漸變的百分比相對應。這不會解決任務,但它會幫助您降低複雜性。

然後,您可以侵蝕圖像以合併所有白色區域。應用閾值後,可以找到連接的組件(使用cvFindContours),這些組件將分隔黑色區域或白色區域中的圖像。然後,您可以通過查找同時包含一片白色區域和黑色區域的5x5區域來檢測漸變。

希望它幫助。