2016-07-14 277 views
1

我需要基於連通分量算法的原理在MATLAB中實現圖像分割函數,但需要進行一些修改。這適用於非常簡單的2D圖像,背景顏色和一些不同顏色的物體。MATLAB中的圖像分割算法

這個想法是,以圖像作爲矩陣,我提供了一個工具來選擇背景顏色(它會根據每個圖像而有所不同)。然後,當選擇圖像背景的顏色值時,我必須分割圖像中的所有對象,並且結果應該是具有相同圖像大小的標記矩陣,0爲背景,並且每個對象的編號不同。

這是我的意思圖形例如:

enter image description here

我明白如何做到這一點的想法,但我不知道如何實現它的MATLAB。對於每個像素(矩陣位置),我應將其標記爲已訪問,然後如果該值對應於背景中的一個,則分配0,否則分配另一個值。物體可以由不同的顏色組成,所以最後我需要分割相鄰像素的組,不管它們的顏色是什麼。此外,我必須使用8連通性,以便將示例圖像的綠色對象僅計爲一個對象,而不是4個不同的對象。而且,對象應該從上到下,從左到右計數。

在MATLAB中有這樣一個簡單的方法嗎?我知道bwlabel函數,但它僅適用於二元圖像,所以我想將其適用於我的情況。

+0

你見過關於圖像分割的Matlab教程,http://www.mathworks.com/discovery/image-segmentation.html,具體來說我認爲Otsu方法會幫助你,更具體的看看'bwconncomp'函數 –

回答

1

,一旦你知道的背景顏色,你可以輕鬆地將您的圖像轉換成相同大小的二進制掩碼:

bw=img!=bg_color; 

一旦你有一個二進制掩碼可以調用bwlavel與8連接參數爲你建議你自己。

注意:在處理之前,您可能需要使用rgb2ind將您的彩色圖像從RGB表示轉換爲索引圖像。

+0

是否可以發佈整個MATLAB實現?謝謝! – xwang