7

我需要從下面的圖像中提取所有牆體邊緣(包括地板,牆壁交點和牆壁,門口交點)。如果我使用canny檢測和hough變換(概率)。它給了我許多冗餘和不必要的行。我正在尋找是否可以在hough變換運行之前改進canny圖像。從圖像中提取魯棒性線條

輸入圖像 Input Image

此以下是精明的檢測算法
我使用精明參數爲0.20 min和max的閾值給出的精明圖像。我無法使用最大閾值的非常高的值,否則我會失去牆邊緣,但與其他圖像相比,梯度將較低。
Normal Canny Image

我想在窗口中識別一個高密度的點簇,如果它高於某個閾值,則將它們設置爲零。

以下是之後獲得的canny圖像。你可以看到牆邊被保留下來。 Modified Canny Image

任何人都可以建議我一個更好的方式來處理這個問題嗎?我的意思是細化Canny圖像,這樣我就可以識別隨機點集羣,並將它們設置爲零。我正在考慮檢查窗口中的共線點,但不知道這會有多有效? 任何評論將是受歡迎的

回答

7

我認爲你可以過濾出最長和接近垂直的線,使用霍夫變換後。看看這個link

SimpleCV只是一個包含OpenCV函數的快捷方式庫,您不需要使用它。我不認爲在得到這個想法後你會遇到問題的實現。

編輯:好的,我想了解更多關於你的問題。實際上,將簇設置爲零作爲預處理步驟並不算糟糕。一步一步增加窗口大小怎麼樣?我的意思是在獲得第二個圖像後,應用2 *窗口大小,相同閾值的另一個聚類過濾器。我認爲你可以繼續這樣做,因爲牆邊很難被取消。

另一種方法是,使用矩形窗口(寬度> = 5 *高度)進行集羣過濾,因爲您需要垂直邊緣。

另一種方式,玩侵蝕和擴張,並過濾出大面積的斑點。

另一種方式,檢查圖像的頂部,只有牆邊和枝形吊燈。您可以水平搜索白色圖案,然後跟隨它的鄰居指定連接點的長度。然後過濾出更長的。

+0

我甚至不想失去牆壁和地板之間的交叉。而算法應該是一些通用的房間圖像 –

+0

爲什麼不考慮簡單的牆壁顏色檢測?從左上角或右上角獲取牆HSV,然後濾出色相差>某個閾值的像素。然後低通濾波器(高斯模糊)或擴大圖像應該很好。 – baci

+0

邊界不均勻=這就是爲什麼你應該擴張+腐蝕,形態上接近。不同顏色=只要您從圖像角落採取顏色,就不會出現問題。閃電條件=直方圖均衡。這就是我在這裏:) – baci