matlab图像的代数运算

图像的加法运算

图像相加可以得到图像的叠加效果。也可以把同一景物的多重影像加起来求平均,以便减少图像的随机噪声。

Z=imadd(X,Y),对X 和Y数组中对应元素相加,返回值Z和X,Y大小一致。如果Y为标量,则X数组中每个元素加上这个变量。该函数类似矩阵的加法运算,但要注意类型的处理。

%利用imadd函数实现两幅图像的叠加
I=imread('rice.png');
J=imread('cameraman.tif');
K=imadd(I,J,'uint16');
subplot(131);imshow(I);
title('原始图像1');
subplot(132);imshow(J);
title('原始图像2');
subplot(133);imshow(K,[]);
title('两幅图叠加');

结果:

J = imnoise(I,type)

向亮度图I中添加指定类型的噪声。type是字符串,可以是以下值。

 ''gaussian''(高斯噪声);''localvar''(均值为零,且一个变量与图像亮度有关);''poisson''(泊松噪声);''salt&pepper''(椒盐噪声);''speckle''(乘性噪声)

J = imnoise(I,type,parameters) 《Simulink与信号处理》

根据噪声类型,可以确定该函数的其它参数。所有的数值参数都进行归一化处理,它们对应于亮度从0到1的图像操作。

J = imnoise(I,'gaussian',m,v)

将均值为m,方差为v的高斯噪声添加到图像I中。默认值为均值是0,方差是0.01的噪声。 《Simulink与信号处理》

J = imnoise(I,'localvar',V)

将均值为0,局部方差为v的高斯噪声添加到图像I上。其中V是与f大小相同的一个数组,它包含了每个点的理想方差值。

J = imnoise(I,'localvar',image_intensity,var)

将均值为0的高斯噪声添加到图像I上,其中噪声的局部方差var是图像I的亮度值的函数。参量image_intensity和var是大小相同的向量,plot(image_intensity,var)绘制出噪声方差和图像亮度的函数关系。向量image_intensity必须包含范围在[0,1]内的归一化亮度值。

J = imnoise(I,'poisson')

从数据中生成泊松噪声,而不是将人工的噪声添加到数据中。为了遵守泊松统计,uint8类和uint16类图像的亮度必须和光子的数量相符合。每当像素的光子数大于65535(但小于10e12)时,就要使用双精度图像。亮度值在0和1之间变化,并且对应于光子的数量除以10e12

J = imnoise(I,'salt & pepper',d)

 用椒盐噪声污染图像I,其中d是噪声密度。因此,大约有d*numel(f)个像素受到了影响。默认的噪声密度为0.05.

 J = imnoise(I,'speckle',v)

 用方程g=f+n*f将乘性噪声添加到图像I上,其中n是均值为0,方差为v的均匀分布的随机噪声。v的默认值为0.04.

%利用imnoise函数为图像添加椒盐噪声
I=imread('eight.tif');
J=imnoise(I,'salt & pepper',0.04);
subplot(121);imshow(I);
title('原始图像');
subplot(122);imshow(J);
title('添加椒盐噪音的图像');

结果:

%利用imadd函数对加噪声的图像进行噪声抑制
I=imread('eight.tif');
J1=imnoise(I,'gaussian',0,0.006);
J2=imnoise(I,'gaussian',0,0.006);
J3=imnoise(I,'gaussian',0,0.006);
J4=imnoise(I,'gaussian',0,0.006);
K=imlincomb(0.3,J1,0.3,J2,0.3,J3,0.3,J4);
figure;
subplot(131);imshow(I);
title('原始图像');
subplot(132);imshow(J1);
title('添加高斯噪声的图像');
subplot(133);imshow(K,[])
title('抑制高斯噪声的图像');

结果:

图像减法运算 

图像相减常用于检测变化及运动的物体,图像相减运算又称图像差分运算。差分方法可以分为可控制环境下的简单差分方法和基于背景模型的差分方法。在可控制环境下,或者很短的时间间隔内,可认为背景是不变的,可以直接使用差分运算检测变化或韵达物体。

消除背景法:

%利用imsubtract函数去除图像的背景
I=imread('rice.png');
background=imopen(I,strel('disk',15));
Ip=imsubtract(I,background);
figure;
subplot(131);imshow(I)
title('原始图像');
subplot(132);imshow(background);
title('背景图');
subplot(133);imshow(Ip,[]);
title('去除背景图');

结果:

 

 绝对值函数imabsdiff

%利用imabsdiff进行图像减法运算
I=imread('cameraman.tif');
J=uint8(filter2(fspecial('gaussian'),I));
K=imabsdiff(I,J);
subplot(131);imshow(I);
title('原始图像');
subplot(132);imshow(J)
title('含噪图像');
subplot(133);imshow(K,[]);
title('两幅图相减');

结果:
 

图像乘法运算 

%对图像进行自乘和与一个常数相乘
I=imread('eight.tif');
subplot(221);imshow(I);
title('原始图像');
I16=uint16(I);
J=immultiply(I16,I16);
subplot(222);imshow(J);
title('图像自乘效果');
J2=immultiply(I,0.5);
subplot(223);imshow(J2);
title('与常数相乘');

结果:

 

图像除法运算 

%利用imdivide函数对图像进行除法运算
I=imread('office_1.jpg');
J=imread('office_2.jpg');
Ip=imdivide(J,I);
K=imdivide(J,0.45);
subplot(221);imshow(I);
title('office1图像');
subplot(222);imshow(J);
title('office2图像');
subplot(223);imshow(Ip);
title('两副图像相除');
subplot(224);imshow(K);
title('图像与常数相除');

结果:

 

猜你喜欢

转载自blog.csdn.net/qq_35654080/article/details/82766908