2014-10-27 65 views
0

我想獲得圖像中像素值最接近圖像中某些像素的所有像素。例如,我有一張海景(深藍色),晴朗天空(淺藍色),海灘和房屋的圖像。我想找到所有最接近深藍色的像素,以便將其歸類爲水。我的問題是天空也被歸類爲水。有人建議使用K最近鄰算法,但在線使用舊C風格的例子很少。任何人都可以使用OpenCv C++提供關於K-NN的示例嗎?獲取具有特定像素值與K-最近鄰的所有圖像像素

+3

如果您分享有問題的圖像和得到錯誤分類的代碼,並將您的結果與您認爲更好分類的現實目標進行對比,那將會更好。 – HostileFork 2014-10-27 21:46:34

+0

它是什麼樣的形象?它有紅外通道嗎? – 2014-10-29 20:27:52

回答

0

「將它歸類爲水」和「獲取圖像中像素值最接近圖像中某些像素的所有像素」不是同一個任務。顏色屬性對於您描述的分類是不夠的。你將永遠在水和天空上有許多相同的顏色點。所以你必須使用更詳細的分析。例如,如果您知道自己的物體是自連接的,則可以使用諸如水絲之類的東西來填充該區域,並忽略與水相同顏色的天空中的遠處和未連接區域(假設您將通過邊緣檢測器時域成功檢測)分裂水和天空的線)。

此外,您可以使用更多關於對象的信息,例如結構:計算其熵等等。然後,您也可以在多維空間中使用K最近鄰算法,其中第1個3維是顏色,第4個熵等。但你也可以簡單地檢查每個圖像像素,如果它是在選定的像素區域(我的意思是色彩熵4D空間,3維從顏色+熵的1維),使用簡單的歐幾里得度量 - 它很漂亮速度快,可以通過GPU加速。