我試圖檢測包含彩色圖像中橢圓形狀頂部的區域。檢測彩色圖像中的水平圓形邊緣
下面是一些例子,我畫:
http://i.imgur.com/fh6udfL.jpg
http://i.imgur.com/3qLBrVn.jpg
你將如何做到這一點?我對圖像處理沒有經驗,但我願意閱讀和學習。我主要在C++中使用OpenCV,但我也可以使用其他庫。
我試圖檢測包含彩色圖像中橢圓形狀頂部的區域。檢測彩色圖像中的水平圓形邊緣
下面是一些例子,我畫:
http://i.imgur.com/fh6udfL.jpg
http://i.imgur.com/3qLBrVn.jpg
你將如何做到這一點?我對圖像處理沒有經驗,但我願意閱讀和學習。我主要在C++中使用OpenCV,但我也可以使用其他庫。
總的來說,你問的事情是一個大問題。在真實世界的圖像中,您需要找到每個橢圓形狀,區分哪一個具有頂部(直到您容忍並考慮了哪個角度?)。然後你需要很好地分割這些形狀,以便找到頂部橢圓形物體的區域。
但是,如果你需要找到更簡單的相似圖片的例子,但仍然是一個更通用的方法,你可能首先通過使用任何邊緣檢測(例如坎尼)得到的邊緣。然後,對曲線和橢圓使用Hough變換。但我不認爲有這方面的功能或圖書館。所以你可能需要實現你自己的Hough變換。爲此,你必須決定你是什麼意思的橢圓形頂部。對於你的兩幅圖像,如果你成功找到橢圓形的頂部,就把它放在它下面。但是爲了獲得更多的一般性,你可能想要用更復雜的方法來細分它。
對於Hough變換; http://en.wikipedia.org/wiki/Hough_transform#Circle_Detection_Process 和橢圓使用它http://en.wikipedia.org/wiki/Randomized_Hough_transform
實際上有一個函數來檢測opencv的圓圈。
使用hough transform低參數2 -cause你應該檢測與僅給予其頂部的圓。
另一種方式應該是這樣的;
1低通濾波器(高斯模糊,OpenCV的文檔裏面搜索)
2 - 彩色濾光片 - 可選(使用對象的顏色,如果你知道它,否則會嘗試從像素的顏色(image.width/2,0)
3- Canny邊緣檢測(再次,參照該文檔)
4-找到輪廓(再次,參照該文檔)
5-如果有具有輪廓最好是大面積和包含像素(image.width/2,0) - 你會使用pointPolygonTest在這裏 - 然後你在底部有一個blob。
6至檢測此斑點是「橢圓形」是個大問題;但你可以使用「橢圓」屬性進行一些過濾;
我會建議一個比霍夫簡單的方法變換圈。 從上面的圖片中,我看到橢圓形的顏色是均勻的,而其餘的圖像沒有。
雖然這種方法可以幫助這兩個圖像,但問題不在於「我想在這些照片中找到具有非均勻顏色背景的這兩個統一顏色的物體」,它會在數據庫中取得成功,並且如果您只是更改顏色那麼會發生什麼? –
那麼,如果解決方案患有過度擬合訓練集並且不能推廣到整個數據集,那只是「欺騙」。改變顏色會改變色調和飽和度,但不應該對色相/飽和度的梯度產生不利影響。 – Leeor
通過改變顏色,我的意思是改變顏色和背景的顏色,如不透明的灰色 –
橢圓檢測,可以參考this post。這兩種方法基於霍夫變換,如果需要可以很容易地調整。
據我所知在opencv中的圓檢測器無法檢測到橢圓形狀。由於他們的數學定義會不同?對不起,我不喜歡OpenCV –
是的,當然,它只能用於純粹的圈子。 – baci