版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuli_dear_wang/article/details/88370186
问题描述:
现在有两张蝴蝶图(如下图),对黑白蝴蝶图命名为 a.jpg , 彩色蝴蝶图命名为 b.jpg。
目标是取出来b图中的彩色蝴蝶,其他部分不提取。
方法一:
代码如下:
clear;clc;close all;
a=imread('a.jpg'); %a是灰度图。(因为黑白图,其矩阵里元素的值都是0和255)
b=imread('b.jpg'); %b是原图,也是三维的彩图
figure,imshow(a);
figure,imshow(b);
c=cat(3,a,a,a); %三张二维灰度图a叠加在一起,形成彩图c,此时彩图c矩阵的值依旧是0-255(不确定的话可以看一下矩阵里面的元素,就会发现都是0和255)
%因为虽然是彩图,但是a是灰度图,且是黑白图,所以三张叠加之后还是黑白图,只不过我们目的是想让它变为三维的
d=c./255; %除以255,得到的彩图d。矩阵里元素的值都是0、1。
e=d.*b; %此时乘以彩图b,(三维矩阵乘以三维矩阵)。由于0乘以任何数都是0,也就是黑色,此时把背景给屏蔽了
%蝴蝶的话因为是用1乘的,其值不变,所以还是彩色
figure;imshow(e);