2014-11-09 134 views
1

我想分割圖像中的對象。該對象是一個葉子,如左圖所示。我做了細分,並得到這個權利圖像:覆蓋原始圖像上分割區域的邊界Matlab

現在我試圖覆蓋從原始圖像二值圖像的分割區域的輪廓邊界,這樣我就可以得到類似的圖像這一個:

我真的不知道如何做到這一點。我試圖追蹤二進制圖像的邊界,然後張貼主圖像,但無法弄清楚如何做到這一點。

回答

2

這很容易做到。只需使用您的面罩並使用bwperim來計算面罩的周長。一旦找到這些邊緣,您可以使用這些位置並將原始圖像中的像素設置爲黃色。爲此,只需提取原始圖像的每個顏色平面,然後使用沿着蒙版周邊的像素索引到每個顏色平面並將其設置爲特定的通道值。要使其變爲黃色,您需要將外圍的紅色和綠色值設置爲255,並將外圍的藍色值設置爲0。如果要將所有這些組合到一個圖像中,請使用cat並沿着第三個維度走。換句話說,假如你的二進制圖像存儲在mask,你的原始圖像中im,你可以這樣做(假設彩色圖像):

perim = bwperim(mask, 8); %// Get perimeter of the mask 
red = im(:,:,1); %// Extract the colour planes of the original image 
green = im(:,:,2); 
blue = im(:,:,3); 
red(perim) = 255; %// Set those pixels in the perimeter to yellow 
green(perim) = 255; 
blue(perim) = 0; 
out = cat(3, red, green, blue); %// Make an output image 
figure; 
imshow(out); 

out應包含的周邊的原始圖像葉子頂部以黃色覆蓋。

+1

外貌像另一個有用的工具'bwperim'!謝謝! +1 – Divakar 2014-11-09 04:39:54

+1

@Divakar - 酷!現在我正在教你的東西!有一天我偶然發現了「bwperim」! – rayryeng 2014-11-09 04:49:01

+1

非常感謝@rayryeng。這是完美的 – Alex 2014-11-09 06:14:50

0

由於matlab版R2015a的還有一個功能,爲您的圖像處理工具箱內做到這一點: visboundaries

我想在鏈接提供的文件應該是很容易理解的:)