数字图像处理:空间域图像处理
直接跳转到代码
注:别忘了图片的路径改成自己的
一、实验目的
理解和掌握图像的线性变换和直方图均衡化的原理和应用;
了解平滑和锐化处理的算法和用途,学习使用平滑滤波器和边缘算子对图像进行平滑和锐化操作。
二、实验内容
1. 图像直方图
(1) 读入一幅图像,计算并绘制图像的直方图。
(2) 读入一幅低对比度图像,对图像进行直方图均衡化处理。
2. 编写程序,实现以下功能:
(1) 读入一幅图像,利用’imnoise’函数,添加高斯噪声;
(2) 通过100次相加求平均的方法去除噪声。
3. 图像的平滑和锐化滤波
(1) 读入一幅图像,分别采用均值和高斯滤波器对图像进行平滑处理。
(提示: 图像滤波首先使用fspecial()函数创建平滑或锐化滤波器,然后调用imfilter()函数实现相应的滤波操作)
(2) 分别采用’prewitt’和’sobel’边缘算子对图像做边缘增强处理。
实验结果图如下:
代码如下:
%1.1
pic=imread('lena.jpg'); %读入图片'lena.jpg'
figure('name','实验结果1');
subplot(2,2,1);
imshow(pic);
title('原图1');
A=imhist(pic); %取直方图
subplot(2,2,3);
bar(0:255,A); %形成256个等级的直方图
title('灰度图像直方图');
%1.2
pic1=imread('lena1.jpg'); %读入图片'lena1.jpg'
subplot(2,2,2);
imshow(pic1);
title('原图2');
B=imhist(histeq(pic1)); %先进行均衡化,再取直方图
subplot(2,2,4);
bar(0:255,B); %形成256个等级的直方图
title('灰度图像均衡直方图');
%2.1
figure('name','实验结果2');
subplot(4,2,1);
imshow(pic);
title('原图');
C=imnoise(pic,'gaussian',0,0.01); %添加均值为0,方差为0.01的高斯噪声
subplot(4,2,3);
imshow(C);
title('添加均值为0,方差为0.01的高斯噪声');
%2.2
[m n]=size(pic) %获取大小
D=zeros(m,n) %创建全0数组
for i=0:99 %循环100次
C=imnoise(pic,'gaussian',0,0.01); %随机加噪
C1=im2double(C); %转成double型进行相加
D=D+C1;
end
D=D/100;
subplot(4,2,4);
imshow(D);
title('去除噪声后图像');
%3.1
E=imfilter(pic,fspecial('average',8)); %生成一个8x8的均值滤波器
F=imfilter(pic,fspecial('gaussian')); %生成高斯滤波器
subplot(4,2,5);
imshow(E);
title('均值平滑处理后图像');
subplot(4,2,6);
imshow(F);
title('高斯滤波器平滑处理后图像');
%3.2
G=pic-uint8(imfilter(pic,fspecial('prewitt')));%生成’prewitt’模板,并对输入图像做边缘增强,再加上原图像
subplot(4,2,7);
imshow(G);
title('’prewitt’对图像做边缘增强处理后图像');
H=pic-uint8(imfilter(pic,fspecial('sobel')));%生成’sobel’模板,并对输入图像做边缘增强,再加上原图像
subplot(4,2,8);
imshow(H);
title('’sobel’对图像做边缘增强处理后图像');