2015-02-05 52 views
3

我有一個圖像,我想檢測我的對象內的洞(用它來計算每個洞的面積)。這是使用opencv進行操作後的圖像。Opencv Hole detection

問題是背景和洞具有相同的顏色。

outputImage

所以我不知道該怎麼辦分開他們,我不知道我應該用什麼算法來檢測孔中。

cv::threshold(channel[1], channel[1], 190, 255, CV_THRESH_BINARY); 
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); 
cv::morphologyEx(channel[1], channel[1], cv::MORPH_OPEN, element); 
cv::dilate(channel[1], channel[1], element); 
cv::bitwise_not(channel[1], channel[1]); 
cv::imwrite("green_after.bmp", channel[1]); 

cv::Mat dist; 
cv::distanceTransform(channel[1], dist, CV_DIST_L2, 3); 
cv::imwrite("dist.bmp", dist); 
cv::normalize(dist, dist, 0, 1., cv::NORM_MINMAX); 
cv::imwrite("dist2.bmp", dist); 
cv::threshold(dist, dist, .1, 1., cv::THRESH_BINARY); 
cv::imwrite("dist3.bmp", dist); 
cv::normalize(dist, dist, 0.0, 255.0, cv::NORM_MINMAX); 
cv::imwrite("dist4.bmp", dist); 

cv::Mat invSrc = cv::Scalar::all(255) - dist; 
cv::imwrite("dist5.bmp", invSrc); 

接下來我應該做什麼?

+0

「洞」的定義是有點不清楚。在黑色大塊內有一些相當大的白色區域。這些背景或漏洞? – 2015-02-05 15:55:07

+0

我會將它們視爲漏洞 – 2015-02-05 15:58:55

+0

是否需要全自動工作,還是允許手動交互(單擊圖像)? – 2015-02-05 16:08:31

回答

1

第一步是二值化和反轉。通過這些步驟,您可以獲得黑色背景,白色物體和黑洞的二進制圖像。

接着我給你使用findContour方法與參數CV_RETR_CCOMP(或者與CV_RETR_TREE):

findContour method in OpenCV

此方法與CV_RETR_CCOMP參數查找所有白色物體的外輪廓,並且還確定所述內部每個孔的輪廓。 「它檢索所有的輪廓,並將它們組織成一個兩層的層次結構,頂層有組件的外部邊界,第二層有孔的邊界。一個連接組件的通孔,它仍然處於頂層。「

如果您在層次結構中具有孔的輪廓,則可以使用矩計算,邊界矩形計算等(Contour Features)繼續進行圖像處理。

的findContour方法的使用在這一問題上所記:

Using hierarchy in findContours() in OpenCV?

+0

謝謝。我這樣做,它的工作 – 2015-02-06 07:45:40

-1

您可以做模板匹配 - 圖像處理中的互相關應用 - 非常簡單。

如果您碰巧有上面圖像的模板(即沒有孔或任何間隙的預期圖像)。您可以執行Xcorrelation,即模板匹配來確定是否有任何漏洞。如果沒有漏洞,你應該得到一個完美的匹配,否則不匹配。正如@Hans在下面評論的那樣,背景仍然是白色 - 這使得它有點棘手。

看一看這個 - http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html

一,我能想到的是解決方案的:

1)相同的大小,即所有的像素值的全黑背景圖像減去你的形象的白色圖像應該對應所有的白人。

2)看指數。那些是你在實際圖像中的漏洞。

+0

謝謝您的幫助。但她的問題,我沒有沒有空白我的形象模板。實際上你談論的模板就是我想要從我的圖像中獲得的信息,然後才進行空洞檢測。 – 2015-02-05 15:42:18

+0

檢查更新的答案,看看我是否觸及了正確的理由! – ha9u63ar 2015-02-05 15:46:08

+0

要點1:如果你只是翻轉顏色,你根本沒有改善這種情況,因爲孔和背景仍然具有相同的顏色。 – 2015-02-05 15:53:28