用 matlab 对图像进行局部提取(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuli_dear_wang/article/details/88370186

问题描述:

现在有两张蝴蝶图(如下图),对黑白蝴蝶图命名为 a.jpg , 彩色蝴蝶图命名为 b.jpg。
目标是取出来b图中的彩色蝴蝶,其他部分不提取。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

方法一:

代码如下:

clear;clc;close all;
a=imread('a.jpg');   %a是灰度图。(因为黑白图,其矩阵里元素的值都是0255)
b=imread('b.jpg');   %b是原图,也是三维的彩图
figure,imshow(a);    
figure,imshow(b);

c=cat(3,a,a,a);      %三张二维灰度图a叠加在一起,形成彩图c,此时彩图c矩阵的值依旧是0-255(不确定的话可以看一下矩阵里面的元素,就会发现都是0255%因为虽然是彩图,但是a是灰度图,且是黑白图,所以三张叠加之后还是黑白图,只不过我们目的是想让它变为三维的
                    
d=c./255;            %除以255,得到的彩图d。矩阵里元素的值都是01。

e=d.*b;              %此时乘以彩图b,(三维矩阵乘以三维矩阵)。由于0乘以任何数都是0,也就是黑色,此时把背景给屏蔽了
                     %蝴蝶的话因为是用1乘的,其值不变,所以还是彩色
figure;imshow(e);    

猜你喜欢

转载自blog.csdn.net/wuli_dear_wang/article/details/88370186