我能够将二进制图像与原始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);
以下是图片。 Here。第一个是从原始衍生的二进制图像,第二个是原始的,第三个是通过上面给出的代码重叠二进制和rgb图像后的结果。正如你所看到的那样,我面临的问题是道路以外的部分是青色,我想要的是不是黑色道路的部分。我怎么能这样做?
如果可以提供帮助,请更改我的代码。谢谢。
答案 0 :(得分:4)
您不需要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,1,3); %# 1 wherever mask is false
I = inImage;
I(mask) = 0;
figure,imshow(I);