了解平滑和锐化处理的算法和用途,学习使用平滑滤波器和边缘算子对图像进行平滑和锐化操作
实验步骤
1.图像直方图
(1) 读入一幅图像,计算并绘制图像的直方图
(2) 读入一幅低对比度图像,对图像进行直方图均衡化处理
(3) 使用’subplot’命令,将原始图像、原始图像直方图、均衡化处理后的图像、均衡化处理后图像直方图同时显示出来。
2.编写程序,实现以下功能:
(1) 读入一幅图像,利用’imnoise’函数,添加高斯噪声;
(2) 通过100次相加求平均的方法去除噪声。
(3) 使用’subplot’命令,将原始图像,添加高斯噪声后的图像,以及去除噪声后的图像同时显示出来。
3.图像的平滑和锐化滤波
(1) 读入一幅图像,分别采用均值和高斯滤波器对图像进行平滑处理
(2) 使用’subplot’命令,将原始图像,平滑处理后的图像同时显示出来
(3) 分别采用’prewitt’和’sobel’边缘算子对图像做边缘增强处理,并显示边缘处理后的图像
(4) 采用“原图*2-平滑图像”,以及“原图+边缘处理图像”的方法锐化图像
(5) 使用’subplot’命令,将原始图像,和锐化处理后的图像同时显示出来。
1. 图像直方图
1.1实验过程
%直方图均衡化
I = imread('D:\rice_256.jpg');
[height,width] = size(I);
subplot(221)
imshow(I)%显示原始图像
title('原始图像');
subplot(222)
imhist(I)%显示原始图像直方图
title('原始图像直方图');
I=histeq(I);
subplot(223)
imshow(I)%显示直方图均衡化之后的图像
title('直方图均衡化之后的图像');
subplot(224)
imhist(I)%显示直方图均衡化之后图像的直方图
title('直方图均衡化之后图像的直方图');
1.2实验的原始图像和结果图像
2、高斯噪音图像
2.1实验过程
I=imread('C:\Users\TheOne\Desktop\rice_256.jpg'); %读取一幅图片
J=imnoise(I,'gaussian',0,0.02); %向这幅图片加入高斯噪声
subplot(1,3,1),imshow(I),title('原始图像'); %显示图片
subplot(1,3,2),imshow(J),title('添加高斯噪声后的图像');
K=zeros(size(I)); %产生全零的矩阵,大小与图片的一样
for i=1:100 %循环100加入噪声
J=imnoise(I,'gaussian',0,0.02);
J1=im2double(J);
K=K+J1;
end
K=K/100;
subplot(1,3,3),imshow(K),title('去除噪声后的图像');
2.2实验的原始图像和结果图像
3、图像的平滑和锐化滤波
3.1实验过程
%彩色、灰度变换
h=imread('C:\Users\TheOne\Desktop\asdf.jpeg'); %读入彩色图片
subplot(2,2,1),imshow(h),title('原始图象'); %显示原始图象
g=imnoise(h,'gaussian',0.1,0.002); %加入高斯噪声
subplot(2,2,2),imshow(g),title('高斯噪声图象'); %显示加入高斯噪声之后的图象
%均值滤波
A=fspecial('average',[3 3]); %生成系统预定义的3X3滤波器
Y=imfilter(g,A); %用生成的滤波器进行滤波,并归一化
subplot(2,2,3),imshow(Y),title('均值滤波图像'); %显示滤波后的图象
%高斯滤波
sigma = 1.6;
gausFilter = fspecial('gaussian',[3 3],sigma);
blur=imfilter(g,gausFilter,'replicate');
subplot(2,2,4),imshow(blur),title('高斯滤波图像');
%采用’prewitt’和’sobel’边缘算子对图像做边缘增强处理
I=imread('D:\lena.jpg');
C=rgb2gray(I); %把彩色图片转化成灰度图片,256级
H=fspecial('prewitt'); %生成’prewitt’模板
K= fspecial('sobel'); %生成’sobel’模板
J=uint8(filter2(H,C)); %对输入图像做边缘增强
L= uint8(filter2(K,C)); %对输入图像做边缘增强
subplot(1,3,1),imshow(C),title('原始图像');
subplot(1,3,2),imshow(J),title('prewitt边缘增强');
subplot(1,3,3),imshow(L),title('sobel边缘增强');
%采用“原图*2-平滑图像”,以及“原图+边缘处理图像”的方法锐化图像
subplot(2,2,1),imshow(h),title('原始图象'); %显示原始图象
S=h*2-Y;
subplot(2,2,2),imshow(S),title('原图*2-平滑图像锐化');
subplot(2,2,3),imshow(C),title('原始图象'); %显示原始图象
F=C+J;
subplot(2,2,4),imshow(F),title('原图+边缘处理图像锐化');
3.2实验的原始图像和结果图像
4、实验总结
图像点处理是图像处理系列的基础,主要用于让我们熟悉Matlab图像处理的编程环境。灰度线性变换和灰度拉伸是对像素灰度值的变换操作,直方图是对像素灰度值的统计,直方图均衡是对灰度值分布的变换。在matlab中,imhist函数用于获取图像数据直方图,histeq函数是用来做直方图均衡的。锐化就是通过增强高频分量来减少图象中的模糊,因此又称为高通滤波。锐化处理在增强图象边缘的同时增加了图象的噪声。平滑与锐化相反,就是滤掉高频分量,从而达到减少图象噪声,使图片变得有些模糊。常用的平滑处理方法有很多种,本实验采用均值和高斯滤波器对图像进行平滑处理。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。而高斯滤波是用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。