基于MATLAB 的图像研究直方图均衡化处理基本原理在实际应用中,希望能够有目的地增强某个灰度区间的图像, 即能够人为地修正直方图的形状, 使之与期望的形状相匹配,这就是直方图规定化的基本思想。
换句话说,希望可以人为地改变直方图形状,使之成为某个特定的形状,直方图规定化就是针对上述要求提出来的一种增强技术,它可以按照预先设定的某个形状来调整图像的直方图。
每一可能的灰度层次所占的像素个数尽量均等,每个像素具有同样的显示机会,从而使图像细节清晰,改善图像的整体对比度。
直方图及其均衡化结果0.0050.010.0150.020.02500.0050.010.0150.020.025图1 直方图及其均衡化空域图像处理均值滤波对一些图像进行线性滤波可以去除图像中某些类型的噪声。
领域平均法就是一种非常适合去除通过扫描得到的图像中的噪声颗粒的线性滤波。
领域平均法是空间域平滑噪声技术。
对于给定的图像()j i f ,中的每个像素点()n m ,,取其领域S 。
设S 含有M 个像素,取其平均值作为处理后所得图像像素点()n m ,处的灰度。
用一像素领域内各像素灰度平均值来代替该像素原来的灰度,即领域平均技术。
领域S 的形状和大小根据图像特点确定。
一般取的形状是正方形、矩形及十字形等,S 的形状和大小可以在全图处理过程中保持不变,也可以根据图像的局部统计特性而变化,点(m,n)一般位于S 的中心。
如S 为3×3领域,点(m,n)位于S 中心,则()()∑∑-=-=++=1111,91,i j j n i m f n m f中值滤波中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。
但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。
中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。
设有一个一维序列1f ,,…,n f ,取窗口长度为m(m 为奇数),对此序列进行中值滤波,就是从输入序列中2f 相继抽出m 个数,v i f -,…,1-i f ,…,1f ,…,1+i f ,…,v i f +,其中i 为窗口的中心位置,21-=m v ,再将这m 个点按其数值大小排列,取其序号为正中间的那作为输出。
用数学公式表示为:{}v i i v i i f f f Med Y +-=,,,,ΛΛ21,-=∈m v Z i在进行滤波前,首先给图像添加噪声,在此,给图像添加高斯噪声和椒盐噪声,并进行均值滤波和中值滤波得到图像如下:加入高斯噪声后图像加入椒盐噪声后图像高斯噪声下均值滤波椒盐噪声下均值滤波高斯噪声下中值滤波椒盐噪声下中值滤波图2高斯噪声与椒盐噪声下的均值滤波与中值滤波结果分析中值滤波和均值滤波后,都残留一些噪点,但是均值滤波残留的噪点量要明显小于中值滤波。
说明均值滤波对于线性的高斯噪声的滤波效果要优于中值滤波。
图像锐化图像锐化的基本概述图像在传输过程中,通常质量都要降低,除了噪声因素外,图像一般都要变得模糊。
这主要是因为图像的传输或转换系统的传递函数对高频成分的衰减作用,造成图像的细节轮廓不清晰。
图像锐化就是使灰度反差增强,从而增强图像中边缘信息,有利于轮廓抽取。
因为轮廓或边缘就是图像中灰度变化率最大的地方。
因此,为了把轮廓抽取出来,就是要找一种方法把图像的最大灰度变化处找出来。
在拉普拉斯算子下的空域锐化结果如下:拉普拉斯滤波图像(ui nt8)拉普拉斯滤波图像(doubl e)原始图像中减去ui nt8原始图像中减去doubl e图3 拉普拉斯算子下的空域锐化结果频域图像处理频率域平滑处理就是选择合适的低通滤波器对其频谱成分进行调整,然后经逆傅立叶变换得到平滑图像。
其中常用的频率域平滑处理方法一般为频率域低通滤波法。
频率域低通滤波是在分析图像信号的频率特征性时,一幅图像中的边缘、跳跃部分以及颗粒噪声代表图像信号的高频分量,而大面积的背景区则代表图像信号的低频分量。
用滤波的方法滤除其高频部分就能去除噪声,使图像得到平滑。
Butterworth 滤波器下的平滑锐化处理0.20.40.60.81图4 频域低通滤波(平滑)0.20.40.60.8图5 频域高通滤波(锐化)附录%%%%%%%%%直方图及其均衡化clear;I=imread('peng.jpg');I=rgb2gray(I);I2=I;add=[];add1=[];tab1=zeros(1,256);tab2=zeros(1,256);for n=0:255X=I==n;add=[add;sum(sum(X))];end;[a,b]=size(I);final=add/(a*b);for n=1:256for i=1:ntab1(n)=tab1(n)+final(i);end;end;tab1=tab1*255;tab2=round(tab1);for n=1:afor m=1:bfor t=0:255if I(n,m)==tI2(n,m)=tab2(t+1);end;end;end;end;for n=0:255X1=I2==n;add1=[add1;sum(sum(X1))];end;[a1,b1]=size(I2);final1=add1/(a1*b1);figure;subplot(211);stem(final,'Marker','none'); title('直方图') subplot(212);stem(final1,'Marker','none') ;title('直方图均衡化')空域锐化滤波clear all; close allI = imread('peng.jpg');w=fspecial('laplacian',0.2)w8=[1,1,1;1,-8,1;1,1,1]I1= imfilter(I,w, 'replicate');figure(1)subplot(2,2,1),imshow(I1), title('拉普拉斯滤波图像(uint8)');f = im2double(I);f1= imfilter(f,w, 'replicate');subplot(2,2,2), imshow(f1,[]), title('拉普拉斯滤波图像(double)'); f2= imfilter(f,w8, 'replicate');f4 = f-f1;f8 = f-f2;subplot(2,2,3), imshow(f4);title('原始图像中减去 uint8');subplot(2,2,4), imshow(f8);title('原始图像中减去double');频域图像平滑和锐化clc;clear all;close all;f=imread ('peng.jpg');[row,col]=size(f);g=fft2(f);%二维离散傅里叶变换gls1=fftshift(g);gls2=fftshift(g);H=zeros(row,col);x0=floor(row/2);y0=floor(col/2);u0=x0;v0=y0;D0=50;%截止频率n=0.2;%滤波器阶数for u=1:rowfor v=1:colD=(u-u0)^2+(v-v0)^2;H1(u,v)=1/(1+(D/D0)^(2*n));H2(u,v)=1/(1+(D0/D)^(2*n));gls1(u,v) = gls1(u,v)*H1(u,v);%%% 低通滤波(平滑) gls2(u,v) = gls2(u,v)*H2(u,v);%%% 高通滤波(锐化)endend%%%%%%%%%%%%%% 频域图像平滑figure(1)rs1=ifftshift(gls1); %% 反频移r1=real(ifft2(rs1)); %% 反变换subplot (2,2,1);imshow(f);subplot (2,2,2);imshow(uint8(r1));subplot (2,2,3);imshow(f+uint8(r1));subplot (2,2,4);H3=H1(x0,y0:col);plot(H3);axis([0 y0 min(H3) max(H3)]);频域图像锐化figure(2)rs2=ifftshift(gls2); %% 反频移r2=real(ifft2(rs2)); %% 反变换subplot (2,2,1);imshow(f);subplot (2,2,2);imshow(uint8(r2)); subplot (2,2,3);imshow(f+uint8(r2)); subplot (2,2,4);H4=H2(x0,y0:col);plot(H4);axis([0 y0 min(H4) max(H4)]);。