开发者

overlaping binary image on the RGB image MATLAB

开发者 https://www.devze.com 2023-03-13 06:49 出处:网络
i am able to overlap the binary image with the original RGB image. Through the following code. inImage = imresize(imread(\'1.jpg\'),0.25);

i am able to overlap the binary image with the original RGB image. Through the following code.

inImage = imresize(imread('1.jpg'),0.25);
%imwrite(inImage,'original.jpg');
inImage = skyrem开发者_JS百科oval(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);

The following are the images. Here.The first is the binary image derived from the original, second is the original and the third is the result after overlaping both binary and rgb images, by the code given above. As you can see the problem i am facing is that the part except road is cyan all i want is the part which is not road to be black. How can i do that?

Please alter my code if you can help. Thank you.


You don't need the find command, since you can index with a binary image.

Instead of

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);

you can write

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

精彩评论

暂无评论...
验证码 换一张
取 消