微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在RGB图像MATLAB上重叠的二进制图像

如何解决在RGB图像MATLAB上重叠的二进制图像

| 我能够将二进制图像与原始RGB图像重叠。通过以下代码
inImage = imresize(imread(\'1.jpg\'),0.25);
%imwrite(inImage,\'original.jpg\');
inImage = skyremoval(inImage);
greyImage = rgb2gray(inImage);


thresh1 = 200;
whiteLayer = greyImage > thresh1;


thresh2 = 125;
lightgreyLayer = greyImage > thresh2 & greyImage <= thresh1;



layer1 = whiteLayer*200;
layer2 = lightgreyLayer*125;


G = layer1 + layer2;
% figure,imshow(G);


se = strel(\'disk\',15);
Io = imopen(G,se);
figure,imshow(Io);

f = find(Io==0);

 mask(:,:,1) = f;  % For the red plane
%  mask(:,2) = f;  % For the green plane
%  mask(:,3) = f;  % For the blue plane

inImage(mask)=0;
I = inImage;
figure,imshow(I);
以下是图像。 在这里,第一个是从原始图像导出的二进制图像,第二个是原始图像,第三个是通过上面给出的代码将二进制图像和rgb图像重叠后的结果。如您所见,我面临的问题是道路以外的部分是青色,我想要的只是道路不是黑色的部分。我怎样才能做到这一点? 如果可以的话,请更改我的代码。谢谢。     

解决方法

        您不需要
find
命令,因为您可以使用二进制映像进行索引。 代替
f = find(Io==0);

 mask(:,:,1) = f;  % For the red plane
%  mask(:,2) = f;  % For the green plane
%  mask(:,3) = f;  % For the blue plane

inImage(mask)=0;
I = inImage;
figure,imshow(I);
你可以写
mask = repmat(Io==0,1,3); %# 1 wherever mask is false
I = inImage;
I(mask) = 0;
figure,imshow(I);
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。