2010-03-01 65 views
3

我不知道這是否可能,但無論如何。MATLAB將邊緣區域合併回圖像

我想從圖像中提取邊緣(我正在考慮爲此使用imfilter(i,fspecial('sobel')),然後一旦邊緣被提取出來,我想操作表示邊緣的圖像,然後一旦操作執行了重新組合與原始圖像的修改的邊緣圖像。

這是可能的,或者沿着這些線路可能的東西嗎?如果是的話可以有人提出一個方法如何執行此重組?

回答

0

回覆您對史蒂夫埃丁的回答:是的,您可以。

%# make an image 
img = zeros(100); 
img(10:40,45:75)=1; 
figure,imshow(img) 

%# find the edge 
edge = bwperim(img); 

%# do something to the edge 
edge = imdilate(edge,ones(3))*0.5; 
figure,imshow(edge) 

%# replace all the pixels in the raw image that correspond to a non-zero pixel in the edge 
%# image with the values they have in the edge image 
img(edge>0) = edge(edge>0); 
figure,imshow(img) 
+0

關於此答案中的代碼的一些評論:bwperim的輸出是邏輯的,所以表達式(邊> 0)與邊相同。其次,邊(邊> 0)全部爲1。所以作業: img(edge> 0)= edge(edge> 0); 相當於更簡單的賦值: img(edge)= 1; – 2010-03-02 01:12:59

+0

其實全都是0.5。 此外,我想展示如何複製邊緣像素,以防它們不均等。 – Jonas 2010-03-02 02:26:26

+0

嗨對不起,它花了一段時間,我睡着了..確定kewl我試試看,並回到你身邊,但是有沒有一個原因,你爲什麼使用bwperim,因爲它不給我我想要的結果?再次感謝大家 – gagius 2010-03-02 08:32:57