I=imread('./figure51.jpg');
I=im2double(I);
figure;
subplot(1,2,1);
imshow(I);
xlabel('原图');
a = 1.5;
b = -150;
I2 = a .* I + b/255;
subplot(1,2,2);
imshow(I2);
xlabel('a=1.5 b=-150 增强对比度');
I=imread('figure51.jpg');
I=im2double(I);
效果图:
2.使用给定的图像lena添加均值为0,方差为0.05的高斯噪声,进行3x3、5x5、7x7邻域平滑。
imag=imread('lena.jpg');
subplot(2,3,1);imshow(imag);
xlabel('原图');
img_noise=double(imnoise(imag,'gaussian',0.05));
subplot(2,3,2);imshow(img_noise,[]);
xlabel('添加均值为0 方差为0.005的噪声');
img_smoothed1=imfilter(img_noise,fspecial('average',3));
subplot(2,3,4);imshow(img_smoothed1,[]);
xlabel('3*3 邻域平滑');
img_smoothed2=imfilter(img_noise,fspecial('average',5));
subplot(2,3,5);imshow(img_smoothed2,[]);
xlabel('5*5邻域平滑');
img_smoothed3=imfilter(img_noise,fspecial('average',7));
subplot(2,3,6);imshow(img_smoothed3,[]);
xlabel('7*7邻域平滑');
效果图:
3.使用Prewitt、Sobel对给定的图像lena进行锐化。
I = imread("lena.jpg");
hx = [-1,-2,-1;
0,0,0;
1,2,1];
hy = hx';
gradx = imfilter(I,hx);
grady = imfilter(I,hy);
grad = abs(gradx)+abs(grady);
hx1 = [-1,-1,-1;
0,0,0;
1,1,1];
hy1 = hx1';
gradx1 = imfilter(I,hx1);
grady1 = imfilter(I,hy1);
grad1 = abs(gradx1)+abs(grady1);
subplot(2,2,1);
imshow(I);
xlabel("原始图");
subplot(2,2,2);
imshow(grad);
xlabel("Sobel算子锐化");
subplot(2,2,4);
imshow(grad1);
xlabel("Prewitt算子锐化");
4.使用高斯低通滤波对图像进行平滑
I=imread('lena.jpg');
subplot(2,2,1);
imshow(I);
I1=fftshift(fft2(I));
[M,N]=size(I1);
n = 2; sig=10;
n1=floor(M/2);n2=floor(N/2);
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);
H=exp(-((d^2/(2*sig^2))));
I2(i,j)=H*I1(i,j);
end
end
I2=ifftshift(I2);
I3=real(ifft2(I2));
subplot(2,2,2);
imshow(I3,[]);
xlabel("sig = 10");
n = 2;sig=20;
n1=floor(M/2);n2=floor(N/2);
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);
H=exp(-((d^2/(2*sig^2))));
I2(i,j)=H*I1(i,j);
end
end
I2=ifftshift(I2);
I3=real(ifft2(I2));
subplot(2,2,3);
imshow(I3,[]);
xlabel("sig = 20");
n=2;sig=40;
n1=floor(M/2);n2=floor(N/2);
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);
H=exp(-((d^2/(2*sig^2))));
I2(i,j)=H*I1(i,j);
end
end
I2=ifftshift(I2);
I3=real(ifft2(I2));
subplot(2,2,4);
imshow(I3,[]);
xlabel("sig = 40");
基于灰度线性变换的图像增强将图像的每个像素灰度做线性拉伸,可以原本模糊不清的原图变得清晰,改善视觉效果。基于空间域平滑滤波的图像增强可以降噪,但是降低噪声的同时也会使图像在边缘和细节处变得模糊,邻域越大,降噪能力越强,图像就越模糊。基于空间域锐化滤波的图像增强,通过微分使得图像边缘和轮廓变得突出、清晰。使用Prewitt算子对水平好竖直两个方向的边缘进行增强,而Sobel算子对像素的4邻域采用带权的方法计算查分,对比来讲Sobel锐化的效果更加突出一些。