Matlab学习4-图像处理之图像加法、图像减法、加噪

图像处理,图像加法(例图像的叠加,调亮色等),图像减法(例捕捉运动图像的轨迹)
环境matlab2020

使用imadd(加)、imsubtract(减)、imresize(改)、imnoise(图像加噪)

matlab函数

imadd(X,Y):
将两个图像相加或在图像中添加常量;
Z=imadd(X,Y)将数组X中的每个元素与数组Y中的对应元素相加,并在输出数组Z的对应元素中返回和。
imsubtract(X,Y)
从一个图像中减去另一个图像或从图像中减去常量;
Z=imsubtract(X,Y)从数组X中的每个元素中减去数组Y中的对应元素,并在输出数组Z的对应元素中返回差。
rgb2gray()
将RGB图像或颜色图转换为灰度图;
I=rgb2gray(RGB)将真彩色图像RGB转换为灰度图像I。通过消除色调和饱和度信息,同时保留亮度,来将RGB图像转换为灰度图。
imnoise():向图像添加噪声
J=imnoise(I,‘gaussian’)将方差为0.01的零均值高斯白噪声添加到灰度图像I。
J=immoise(I,‘gaussian’,m)添加高斯白噪声,均值为m,方差为0.01。
J=imnoise(I,‘gaussian’,m,var_gauss)添加高斯白噪声,均值为m,方差为var_gauss。
J=imnoise(I,‘localvar’,var_local)添加局部方差为var_local的零均值高斯白噪声。
J=imnoise(I,‘localvar’,intensity_map,var_local)添加零均值高斯白噪声。噪声的局部方差 var_1ocal是I中图像强度值的函数。图像强度值到噪声方差的映射由向量intensity_map 指定。
J=imnoise(I,‘poisson’)从数据中生成泊松噪声,而不是向数据中添加人为噪声。有关详细信息,请参阅算法。
J=imnoise(I,'salt&pepper")添加椒盐噪声,默认噪声密度为0.05。这会影响大约5%的像素。
3=imnoise(I,‘salt&pepper’,d)添加椒盐噪声,其中d是噪声密度。这会影响大约dnumel(I)个像素。=imnoise(I,‘speckle’)使用方程]=I+nT 添加乘性噪声,其中n是均值为0、方差为0.05的均匀分布随机噪声。
J=imnoise(I,‘speckle’,var_speckle)添加方差为var_speckle的乘性噪声。

1、图像加法

效果如下:
在这里插入图片描述

test.m代码:

%图像加法
img1=imread("A.bmp");
img2=imread("B.bmp");
%rbg图像转变灰度图像
img3=rgb2gray(img1);
img4=rgb2gray(img2);
%灰度图像相加
img5=imadd(img3,img4);
%显示
subplot(1,3,1),imshow(img3),xlabel("A");
subplot(1,3,2),imshow(img4),xlabel("B");
subplot(1,3,3),imshow(img5),xlabel("A+B");

2、图像融合

效果如下:
在这里插入图片描述

test.m代码:

%图像融合
img1=imread("man.tif");
img2=imread("test1.png");
%修改图像大小
% img1=imresize(img1,[200,200]);
% img2=imresize(img2,[200,200]);

%图像相加,x,y必须具有相同大小和类
img3=imadd(img1,img2);

subplot(1,3,1),imshow(img1),xlabel("A");
subplot(1,3,2),imshow(img2),xlabel("B");
subplot(1,3,3),imshow(img3),xlabel("A+B");

3、图像融合,使用具体参数

效果如下:
在这里插入图片描述

test.m代码:

%图像融合,使用具体参数
img1=imread("test1.png");

%图像相加
img2=imadd(img1,50);
img3=imadd(img1,-50);

subplot(1,3,1),imshow(img1),xlabel("原图像");
subplot(1,3,2),imshow(img2),xlabel("增加亮度后的图像");
subplot(1,3,3),imshow(img3),xlabel("减弱亮度后的图像");

4、图像还原

效果如下:
在这里插入图片描述

test.m代码:

扫描二维码关注公众号,回复: 16033217 查看本文章
%图像还原
%原始图像
img=imread("test.png");
img=rgb2gray(img);
subplot(2,3,1),imshow(img),xlabel("(a)原图像");
[m,n]=size(img);

%加噪图像(被还原图像)
img1=imnoise(img,"gaussian",0,0.01);%叠加零均值高斯噪声(方差为0.01subplot(2,3,2),imshow(img1),xlabel("(b)加噪图像");

%2幅同类图像进行相加平均
J=zeros(m,n);
J=double(J);
for i=1:2
    X=imnoise(img,"gaussian");
    Y=double(X);
    J=J+Y/2;
end
subplot(2,3,3),imshow(mat2gray(J)),xlabel("(c)2幅图像平均");
%4幅同类图像进行相加平均
J=zeros(m,n);
J=double(J);
for i=1:4
    X=imnoise(img,"gaussian");
    Y=double(X);
    J=J+Y/4;
end
subplot(2,3,4),imshow(mat2gray(J)),xlabel("(d)4幅图像平均");
%8幅同类图像进行相加平均
J=zeros(m,n);
J=double(J);
for i=1:8
    X=imnoise(img,"gaussian");
    Y=double(X);
    J=J+Y/8;
end
subplot(2,3,5),imshow(mat2gray(J)),xlabel("(e)8幅图像平均");
%16幅同类图像进行相加平均
J=zeros(m,n);
J=double(J);
for i=1:16
    X=imnoise(img,"gaussian");
    Y=double(X);
    J=J+Y/16;
end
subplot(2,3,6),imshow(mat2gray(J)),xlabel("(f)16幅图像平均");

5、图像减法

效果如下:
在这里插入图片描述

test.m代码:

%图像减法
img1=imread("A.bmp");
img2=imread("B.bmp");
%修改图像大小
% img1=imresize(img1,[200,200]);
% img2=imresize(img2,[200,200]);

%图像相减,要求图像矩阵相同大小
img3=imsubtract(img1,img2);
subplot(1,3,1),imshow(img1),xlabel("A");
subplot(1,3,2),imshow(img2),xlabel("B");
subplot(1,3,3),imshow(img3),xlabel("A-B");

6、图像减法,捕捉图像运动轨迹

效果如下:
在这里插入图片描述

test.m代码:

%图像减法,运动图像轨迹
img1=imread("F4_8a.bmp");
img2=imread("F4_8b.bmp");
img3=imread("F4_8c.bmp");
subplot(2,3,1),imshow(img1),xlabel("a");
subplot(2,3,2),imshow(img2),xlabel("b");
subplot(2,3,3),imshow(img3),xlabel("c");

%图像相减
img4=imsubtract(img1,img2);
img5=imsubtract(img2,img3);
img6=imsubtract(img1,img3);


subplot(2,3,4),imshow(img4),xlabel("a-b");
subplot(2,3,5),imshow(img5),xlabel("b-c");
subplot(2,3,6),imshow(img6),xlabel("a-c");

素材:https://gitee.com/CYFreud/matlab/tree/master/image_processing/demo4_220328

猜你喜欢

转载自blog.csdn.net/CHengYuP/article/details/123816014
今日推荐