我使用matlab中的輪廓函數來繪製範圍從-2到2的圖像的邊界。它由波紋管代碼完成。我想在原始圖像的當前輪廓中繪製一個新的輪廓重疊。通過matlab在圖像中繪製兩個輪廓
該顏色輪廓是黃色。黃色輪廓根據掩碼中的位置創建。請注意,蒙版是從原始圖像中提取的,但只能選擇某個位置作爲波紋圖。我的預期結果是如輸出圖像。你能幫我解決我的問題嗎?
這是我的代碼畫出輪廓原始圖片
%% Draw contour in Orignal
%%Create image I
I= ones(10)*2;
I(3:8,3:8) = -1;
I(5:6,5:6) = -2;
I(3:8,3)=1;
I(3:8,8)=1;
I(8,3:8)=1;
I(3,3:8)=1;
%% Mask
mask=zeros(10);
mask(3,5:6) = 1;
mask(5:6,3) = 1;
mask(4,5:6) = -1;
mask(5:6,4) = -1;
imagesc(uint8(I),[-2 2]),colormap(gray),axis off;axis equal,
hold on
[c,h] = contour(I,[0 0],'r','Linewidth',3);
Update問題:基於丹尼爾,他對上面的輸入代碼做工精良的sugeestion。但是,我檢查新的輸入,它不起作用。讓看到新的輸入
I=[ 2 2 2 2 2 2 2 2 2
2 2 2 1 1 2 2 2 2
2 1 1 -1 -1 1 2 2 2
2 -1 -1 0 -1 1 2 2 2
1 -1 0 -1 1 2 2 2 2
1 -1 -1 1 2 2 2 2 2
1 -1 1 2 2 2 2 2 2
1 1 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2];
mask=[ NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN -1 1 NaN NaN NaN
NaN NaN NaN -1 1 NaN NaN NaN NaN
NaN NaN -1 1 NaN NaN NaN NaN NaN
NaN -1 1 NaN NaN NaN NaN NaN NaN
NaN 1 NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN];
%%Daniel code
imagesc(uint8(I),[-2 2]),colormap(gray),axis off;axis equal,
hold on
[c,h] = contour(I,[0 0],'r','Linewidth',3);
[c,h] = contour(mask,[0 0],'g','Linewidth',3);
這是輸出。上面的代碼會發生什麼?你能解決它幫助我嗎?
如果您添加了生成該數據的代碼,那也不錯。讓人們很容易... – kkuilla 2015-02-24 16:01:55