实验一 图像增强与平滑
一.实验目的及要求
1.了解MATLAB的操作环境和基本功能。
2.掌握MATLAB中图像增强与平滑的函数的使用方法。 3.加深理解图像增强与平滑的算法原理。
二、实验设备
1.计算机;
2.MATLAB6.5及以上; 三、实验内容及结果
(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1.直方图均衡化
分析:直方图均衡化是一种使输出图像直方图近似为均匀分布的变换算法,是一种直方
图修改技术。在MATLAB 中,可以调用函数histeq自动完成图像的直方图均衡化。
[I2,T] = histeq(I); 函数功能:返回从能将图像I的灰度直方图变换成图像I2的直方图变换T。
imwrite(A,filename,fmt), 函数功能:将图像数据写入到图像文件中, 存储在磁盘上。A是图像数据, filename是目标图像名字, fmt是要生成的图片的格式。 imfinfo(filename,fmt) 函数功能:获取一张图片的具体信息。 2.直接灰度变换
分析:J = imadjust(I,[low_in high_in],[low_out high_out],gamma)
[X,map] = imread(filename,fmt) 函数功能:把文件filename读取到X的map向量中。 灰度变换可调整图像的灰度动态范围或图像对比度,是图像增强的重要手段之一。
3.空域平滑滤波(模糊、去噪)
分析:通过观察前三幅图像,可知图像平均是以图像模糊为代价来换取噪声的减少,所选取的邻域面积越大,图像越模糊。
本例中分别给图像加入了均值为0,方差为0.005的高斯噪声,噪声密度为0.02的椒盐噪声,
再进行均值滤波和中值滤波,由得到的结果可知,对于椒盐噪声,中值滤波的效果比均值滤波的效果好,因为椒盐噪声的均值不为0;对于高斯噪声,均值滤波的效果比中值滤波的效果好,因为高斯噪声服从正态分布,均值为0。
4.空域锐化滤波
分析:w=fspecial('laplacian',0) 建立拉普拉斯算子
w8=[1,1,1;1,-8,1;1,1,1] w =
0 1 0 1 -4 1 0 1 0
w8 =
1 1 1 1 -8 1 1 1 1
I1= imfilter(I,w, 'replicate') 'replicate'表示图像大小通过复制外边界的值来扩展 通过观察得到的图像可知,锐化滤波主要用来增加反差,增强被模糊的细节或边缘
(二)采用MATLAB底层函数编程实现 1.灰度变换之动态范围扩展
原理:假定原图像f(x, y)的灰度范围为[a, b],希望变换后图像 g(x, y)的灰度范围扩展至[c, d],则线性变换可表示为:
g(x,y)dc[f(x,y)a]c ba 用MATLAB底层函数编程实现上述变换函数。观察图像‘ pout.tif’的灰度直方图,选择
合适的参数[a, b]、[c, d]对图像‘pout.tif’进行灰度变换,以获得满意的视觉效果。
clear all; close all I = imread('pout.tif');
figure,imhist(I),title('Original image'); a=80;b=220; c=20;d=255;
N=(d-c)/(b-a).*(I-a)+c;
figure,subplot(121),imshow(I),title('Original image'); subplot(122),imshow(N),title('New image'); figure,imhist(N),title('New image');
Original image16001400120010008006004002000050100150200250New image16001400120010008006004002000050100150200250
观察原始图像的直方图知该图像的灰度范围主要集中在75至150,所以也可以就只对这个范围进行扩展. clear all; close all I = imread('pout.tif'); a=75;b=150; c=30;d=220; [M,N]=size(I); for i=1:M for j=1:N
if I(i,j)>=b I1(i,j)=d; elseif I(i,j)>=a
I1(i,j)=(d-c)/(b-a)*(I(i,j)-a)+c; else I1(i,j)=c; end end end
,subplot(121),imshow(I),title('Original image');
subplot(122),imshow(I1),title('New image'); figure,imhist(I1),title('New image');
New image16001400120010008006004002000050100150200250
2.非锐化掩蔽和高升滤波
原理:从原图像中减去其非锐化(平滑过的)图像的过程称为非锐化掩蔽,其基本步骤为:
⑴对原图像进行平滑滤波得到模糊图像f(x,y);
⑵从原图像中减去模糊图像,产生的差值图像称为模板gmask(x,y); ⑶将模板加到原图像上,得到锐化后的图像g(x,y)。 即,
gmask(x,y)f(x,y) - f(x,y)
g(x,y)f(x,y)kgmask(x,y);k1
用MATLAB函数编程实现上述功能。 clear all; close all I = imread('moon.tif'); h1 = ones(5,5) / 25; I1 = imfilter(I,h1);
figure(1), imshow(I), title('Original Image');
figure(2), imshow(I1), title('Filtered Image With 5*5 '); M=imsubtract(I,I1); %也可以用M=I-I1 figure(3), imshow(M), title('mask '); k=2; I2=I+k.*M;
figure(4), imshow(I2), title('New image ');
Filtered Image With 5*5 Original Image
mask New image
四.实验总结
本次实验主要对图像增强与平滑的相关理论知识,通过使用matlab,进行实践。图像增强处理除了可以使用灰度变换,空域滤波,还可以使用频域滤波以及进行彩色增强等。图像平滑用于去噪,对图像高频分量即图像边缘会有影响。对于数字图像处理这门课,还是要多多实践,才能真正掌握相关知识。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务