對於這個特定的圖像,你不需要在全綵色空間中工作,而是可以在單獨的強度(HSV的「V」的一部分 - 「值」,意思強度)工作。
無論您使用的價值空間或色彩空間,佩內洛普提到,將取決於你生產你的真實物體的自然的圖像。對於一般情況,您可能需要使用色調和值(強度)的組合來正確分割圖像。而不是在色相值向量空間中工作,分別在H和V圖像平面中工作並結合結果更爲直接。 (在3D矢量空間中的分割當然是可能的,但對於這個項目可能會不必要的複雜。)
OpenCV中的分水嶺算法可以很好地滿足您的需求。關於大津的方法謹慎 http://www.seas.upenn.edu/~bensapp/opencvdocs/ref/opencvref_cv.htm
一字:它的優良用於分離兩種模式時的強度值(或色調值)的直方圖是雙峯分佈,但對於自然圖像也並不常見有真正雙峯分佈。如果背景和/或前景物體的強度和/或色調從物體的一側到另一側發生變化,則大津表現不佳。
大津當然可以擴展爲多種模式,如數字圖像處理由岡薩雷斯和伍茲和其他介紹教科書的主題。但是,即使使用Otsu一次分離一對模式,背景漸變也會導致問題。
您還需要確保如果您的相機鏡頭放大或縮小,您仍然可以找到相同的二值化閾值。基本的Otsu技術使用圖像直方圖中的所有像素。這意味着您可以對圖像中的所有像素進行加擾,以產生與原始圖像具有相同圖像直方圖的純噪聲,並且Otsu的方法會生成相同的閾值。
一個常見的技巧是依靠邊緣附近的像素。在你的例子中,我們可以認爲圖像是一個尖銳邊緣,銳角和(希望)統一HSV值的區域。在邊緣附近採樣像素可以通過幾種方式完成,包括:
- 找到強大的邊緣點(使用Canny或一些更簡單的技術)。沿邊緣梯度的方向,並且在從邊緣點距離+/- d,採樣的(相對)前景和(相對)的背景的灰度等級。距離D應該比所討論的物體的尺寸小得多。
- 尋找強大的優勢點。邊沿點自己作爲可能所需的閾值的估計使用灰度級。一個在object1和對象2之間的邊緣,而另一個在對象2和object3之間的邊緣:在你的榜樣,你就會有兩個強峯邊了。
由於您的物體有角落,您可以使用它們來幫助識別適合採樣的物體邊界和/或邊緣像素。
如果你有標稱的矩形對象,你也可以使用霍夫邊緣或RANSAC邊緣算法來識別圖像中的線條,找到角落,等路口
所有這一切說,幾乎涉及對象的任何自然的圖像相互堆疊你會遇到許多複雜的頂部:
顏色和強度梯度跨越名義上的對象
一個不同的距離如果你肯定知道有多少對象不同清晰度的色彩一致
邊緣s是存在的,你可以嘗試一個K手段技術。 http://aishack.in/tutorials/knearest-neighbors-in-opencv/ 對於更復雜的分割任務,例如當對象的數量是不知道,你可以使用均值漂移技術,但我第一次建議嘗試簡單的技術。
第一步和最簡單的解決方法是使用適當的照明。要減少反射和陰影,請使用漫反射照明。對於許多應用,最接近理想的漫射照明是「陰天」照明: http://www.microscan.com/en-us/products/nerlite-machine-vision-lighting/cdi-illuminators.aspx
更簡單地說,你可以嘗試一個或多個「反彈」燈,如在攝影工作室使用。 http://www.photography.com/articles/taking-photos/bounce-lighting/
「顏色在這個空間應該有非常不同的色調值」有用的技巧,我會記住的。 – SigTerm 2011-12-30 16:16:46