实验三基于直方图均衡化的图像增强一.实验目的1.了解空间域图像增强的各种方法(点处理、掩模处理);2.掌握采用直方图均衡化进行图像增强的方法;3.使用邻域平均法编写程序实现图像增强,进一步掌握掩模法及其改进(加门限法)消除噪声的原理;二.实验设备1.PC机一台;2.软件matlab;三.实验内容及步骤对如图3.1所示的两幅128×128、256级灰度的数字图像fing_128.img和cell_128.img进行如下处理:(1)对原图像进行直方图均衡化处理,同屏显示处理前后图像及其直方图,比较异同,并回答为什么数字图像均衡化后其直方图并非完全均匀分布。(2)对原图像加入点噪声,用4-邻域平均法平滑加噪声图像(图像四周边界不处理,下同),同屏显示原图像、加噪声图像和处理后的图像。①不加门限;②加门限),(21nmfT,(其中ijjifNnmf),(1),(2)实验程序及结果:(1)原图直方图均衡化处理:《1》Fing_128图像的处理前后图像及其直方图:程序:figure(1);fid=fopen('F:\数字图象处理\数字图像处理\fing_128.img','r');data1=(fread(fid,[128,128],'uint8'))';subplot(2,2,1)data2=uint8(data1);imshow(data2);subplot(2,2,2);imhist(data2);a=imadjust(data2,[0,0.5]);subplot(2,2,4);imhist(a);subplot(2,2,3);imshow(a,256);%显示均衡化图象,256可缺省《2》Cell_128图象的处理前后图像及其直方图:数字图象均衡化后,其直方图并非完全均匀分布,这是因为图象的象素个数和灰度等级均为离散数值;而且均衡化使灰度级并归,因此,均衡化后,其直方图并非完全均匀分布。1.直方图修改处理图像的概念及方法图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要有直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。本实验以直方图均衡化增强图像对比度的方法为主要内容,其他方法可以在课后自行练习。直方图是多种空间域处理技术的基础。直方图操作能有效地用于图像增强。除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。直方图在软件中易于计算,也适用于商用硬件设备,因此,它们成为实时图像处理的一个流行工具。直方图是图像的最基本的统计特征,它反映的是图像的灰度值的分布情况。直方图均衡化的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。灰度直方图是图像预处理中涉及最广泛的基本概念之一。图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律。直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果。直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程2.直方图均衡化增强图像对比度的MATLAB程序:I=imread('rice.png');%读入原图像J=histeq(I);%对原图像进行直方图均衡化处理Imshow(I);%显示原图像Title('原图像');%给原图像加标题名figure;Imshow(J);%对原图像进行屏幕控制;显示直方图均衡化后的图像Title('直方图均衡化后的图像');%给直方图均衡化后的图像加标题名figure;subplot(1,2,1);%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排两幅图的第1幅图Imhist(I,64);%将原图像直方图显示为64级灰度Title('原图像直方图');%给原图像直方图加标题名Subplot(1,2,2);%作第2幅子图Imhist(J,64);%将均衡化后图像的直方图显示为64级灰度Title('均衡变换后的直方图');%给均衡化后图像直方图加标题名2.直方图均衡化增强图像对比度的MATLAB程序A=imread('peppers.png');B=rgb2gray(A)T=graythresh(B);g=im2bw(B,T);subplot(121),imshow(B);subplot(122),imshow(g);B=imread('peppers.png');A=double(B);[m,n]=size(A);hist1=zeros(1,256);fori=1:mforj=1:npix=A(i,j);hist1(pix+1)=hist1(pix+1)+1;hist(pix+1)=double(hist1(pix+1)/(m+n));endendfori=1:mforj=1:nifA(i,j)=128;C(i,j)=0;elseC(i,j)=255;endendendsubplot(121),bar(hist);subplot(122),imshow(C,[])