一、图像的代数运算(医学图像处理、图像误差检测)
首先把图像转换成与Matlab基本代数符类型相容的双精度浮点型,再利用Matlab的代数运算符实现图像的代数运算。
1.图像的加法运算
>> i=imread('rice.png');
>> j=imread('cameraman.tif');
>> k=imadd(i,j,'uint16');
>> subplot(1,3,1);imshow(i);title('原始图像rice');
>> subplot(1,3,2);imshow(j);title('原始图像cameraman');
>> subplot(1,3,3);imshow(k);title('两幅图像叠加');
>> subplot(1,3,3);imshow(k,[]);title('两幅图像叠加');
imshow(K)直接显示灰度图像K
imshow(K,[])显示K,并将K的最大值和最小值分别作为纯白(255)和纯黑(0),中间的K值映射为0-255之间的标准灰度值。
2.添加噪声
- 添加高斯噪声,m,v分别为噪声的均值与方差,默认m=0,b=0.01
- 添加椒盐噪声,d分别为噪声的密度,默认为0.05
- 添加噪声,通用的格式:
>> i=imread('eight.tif');
>> j=imnoise(i,'salt & pepper',0.04);
>> subplot(1,2,1);imshow(i);title('原始图像');
>> subplot(1,2,2);imshow(j);title('添加椒盐噪声的图像');
利用多图像的平均可以降低图像的噪声
对于原图像,假设有一个噪声图像集:
一般噪声满足零期望:
如果用均值来估计噪声分布的期望,则有:
所以可以降低图像的噪声。
>> 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(1,3,1);imshow(i);title('原始图像');
>> subplot(1,3,2);imshow(j1);title('添加高斯噪声的图像');
>> subplot(1,3,3);imshow(K,[]);