我使用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