Я использую функцию контура в Matlab, чтобы нарисовать границу изображения I, которая колеблется от -2 до 2. Это делается ниже. Я хочу нарисовать новые контурные перекрытия в текущем контуре в изображении orignal.Нарисуйте два контура в изображении по matlab
Этот цвет контур желтый цвет. Желтый контур создается на основе положения в маске. Обратите внимание, что маска выводится из изображения orignal, но только выбирает какое-то положение в качестве нижнего рисунка. Мой ожидаемый результат такой, как вывод изображения. Не могли бы вы помочь мне решить мою проблему?
Это мой код, чтобы нарисовать контур в Orignal Image
%% 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