数字图像处理实验五--图像增强

数字图像处理实验五

(图像增强)

实验内容:
  1. 对曝光不足的图像采用灰度线性变换对图像每一个像素灰度做线性拉伸。
  2. 利用空间域平滑滤波器对图像进行平滑。
  3. 利用Prewitt、Sobel对图像进行锐化。
  4. 利用高斯低通滤波对图像进行平滑。
实验步骤:
  1. 对给定图像figure51做线性拉伸
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);

效果图:数字图像处理实验五--图像增强_第1张图片
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邻域平滑'); 

效果图:数字图像处理实验五--图像增强_第2张图片
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算子锐化");

效果图:
数字图像处理实验五--图像增强_第3张图片

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");

效果图:数字图像处理实验五--图像增强_第4张图片

问题讨论:

基于灰度线性变换的图像增强将图像的每个像素灰度做线性拉伸,可以原本模糊不清的原图变得清晰,改善视觉效果。基于空间域平滑滤波的图像增强可以降噪,但是降低噪声的同时也会使图像在边缘和细节处变得模糊,邻域越大,降噪能力越强,图像就越模糊。基于空间域锐化滤波的图像增强,通过微分使得图像边缘和轮廓变得突出、清晰。使用Prewitt算子对水平好竖直两个方向的边缘进行增强,而Sobel算子对像素的4邻域采用带权的方法计算查分,对比来讲Sobel锐化的效果更加突出一些。

你可能感兴趣的:(数字图像处理,计算机视觉,图像处理,matlab)