我不知道這是否可能,但無論如何。MATLAB將邊緣區域合併回圖像
我想從圖像中提取邊緣(我正在考慮爲此使用imfilter(i,fspecial('sobel'))
,然後一旦邊緣被提取出來,我想操作表示邊緣的圖像,然後一旦操作執行了重新組合與原始圖像的修改的邊緣圖像。
這是可能的,或者沿着這些線路可能的東西嗎?如果是的話可以有人提出一個方法如何執行此重組?
我不知道這是否可能,但無論如何。MATLAB將邊緣區域合併回圖像
我想從圖像中提取邊緣(我正在考慮爲此使用imfilter(i,fspecial('sobel'))
,然後一旦邊緣被提取出來,我想操作表示邊緣的圖像,然後一旦操作執行了重新組合與原始圖像的修改的邊緣圖像。
這是可能的,或者沿着這些線路可能的東西嗎?如果是的話可以有人提出一個方法如何執行此重組?
嘗試在MATLAB的中央文件交換的imoverlay function 。這是一個輸出圖像示例:
alt text http://www.mathworks.com/matlabcentral/fx_files/10502/1/imoverlay_screenshot.png
回覆您對史蒂夫埃丁的回答:是的,您可以。
%# 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)
關於此答案中的代碼的一些評論:bwperim的輸出是邏輯的,所以表達式(邊> 0)與邊相同。其次,邊(邊> 0)全部爲1。所以作業: img(edge> 0)= edge(edge> 0); 相當於更簡單的賦值: img(edge)= 1; – 2010-03-02 01:12:59
其實全都是0.5。 此外,我想展示如何複製邊緣像素,以防它們不均等。 – Jonas 2010-03-02 02:26:26
嗨對不起,它花了一段時間,我睡着了..確定kewl我試試看,並回到你身邊,但是有沒有一個原因,你爲什麼使用bwperim,因爲它不給我我想要的結果?再次感謝大家 – gagius 2010-03-02 08:32:57
非常感謝,我想我可以使用這個,但是隻是爲了仔細檢查可以任意1想到一種方式,圖像的邊緣區域可以從字面上被另一個邊緣圖像取代?再次感謝Eddins先生 – gagius 2010-03-01 20:26:19