970 likes | 1.22k Views
第 3 章 空间域图像增强. 一个指纹图像增强的实例. 主要内容 3.1 简介 3.2 基本灰度变换 3.3 直方图处理(难点) 3.4 算术 / 逻辑操作增强 3.5 平滑空间滤波器 3.6 锐化空间滤波器 3.7 在图像增强中使用直方图统计学 (一个精妙的例子,自学) 3.8 混合空间滤波器:(又一个精妙的例子,自学). 3.1 简介 1 图像增强的定义
E N D
主要内容 3.1 简介 3.2 基本灰度变换 3.3 直方图处理(难点) 3.4 算术/逻辑操作增强 3.5 平滑空间滤波器 3.6锐化空间滤波器 3.7 在图像增强中使用直方图统计学 (一个精妙的例子,自学) 3.8 混合空间滤波器:(又一个精妙的例子,自学)
3.1 简介 1 图像增强的定义 图像增强是一类基本的图像处理技术,其目的是对图像进行加工,以得到对视觉解释来说视觉效果“更好”、或对机器感知效果来说“更有用”的图像。 (1)视觉效果更好的例子
(2)机器感知效果更好的例子 “特征脸”
2 图像增强的分类 (1)空间域增强和频率域增强 (2)空间域增强方法分类 g(x,y)=T(f(x,y)) A、点操作 B、邻域操作 C、图像集操作
3.2 基本灰度变换 1 图像反转 (1)公式表示:灰度级范围[0,L-1]时 s=L-1-r 255 0 255
灰度图像实例 (2)特点:“实现反白”。
(3)应用范围: 特别适用于嵌入于图像暗色区域的白色或灰色细节。
2 对数变换 (1)公式表示 s=c* log(1+r) (2)特点 “ 扩展低输入,压缩高输入”。 (3)应用范围 当原图动态范围太大,超出显示设备的范围 时,如直接显示原图则一部分细节可能丢失。此时 可采用对数变换。如傅里叶频谱的显示。
(4)MATLAB实现 f = imread ( ‘pout.tif’); F=fft2(f); % Fourier Transform FC=fftshift(F); %将变换原点移到频率矩形的中心。 imshow(abs(FC), [ ]); S2= log(1+ abs(FC)); figure,imshow(S2, [ ]);
3 幂次变换 (1)公式表示 (2)特点: 非常灵活。 (3)应用范围 比较广泛,可代替对数变换和反对数变换。
(4)MATLAB实现 语法:g=imadjust(f, [low_in high_in], [low_out high_out],gamma) 说明:将图像f中的亮度值影响到g中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值, low_in以下的值映射为low_out, high_in以上的值映射为high_out。 参数gamma指定了映射曲线的形状。 f = imread ( ‘pout.tif’); imshow(f); g1=imadjust(f, [0 1], [1 0]); figure, imshow(g1); g2=imadjust(f, [0.5 0.75], [1 0], 0.5); figure, imshow(g2);
4 分段线性变换 (1)对比度拉伸
(2)特点: “压缩两端的背景的动态范围, 扩展中段的目标的动态范围”
(2)灰度切分 特点:突出目标的轮廓,消除背景细节 特点:突出目标的轮廓,保留背景细节
3.3 直方图处理 1 直方图 (1)概念 灰度直方图表示图像中每种灰度出现的像素数目。
(3)归一化直方图的计算 式中:nk为图像中出现rk级灰度的像素数,n是图像像素总数,而nk/n即为频数。 随堂练习: 计算归一化直方图
(4)MATLAB实现 语法:h=imhist(f, b) 说明:b是用于形成直方图的灰度级的个数。 f = imread ( ‘pout.tif’); imhist(f);
2 直方图均衡化 (1)灰度变换函数 假说满足以下条件: A、T(r)在区间0≤ r ≤1中为单值且单调递增; (单值是为了保证反变换的存在; 单调递增条件保持输出图像从黑到白顺序增加) B、当0≤ r ≤1时,0≤ T(r) ≤1。 (输出灰度范围一致)
从s到r 的反变换: r =T-1(s)
证明:(自学内容) 由概率论理论可知,如果已知随机变量ξ的概率密度函数为pr(r),而随机变量η是ξ的函数,即η=T(ξ),η的概率密度为ps(s),所以可由pr(r)求出ps (s)。 因为s=T(r)是单调增加的,因此它的反函数r=T-1(s)也是单调函数。在这种情况下,η<s且仅当ξ<r时发生,所以可以求得随机变量η的分布函数为(推导) 对上式两边求导,即可得到随机变量η的分布密度函数ps (s)为 通过变换函数T(r)可以控制图像灰度级的概率密度函数,从而改变图像的灰度层次。这就是直方图修改技术的理论基础。
(3)累积分布函数(CDF) (4)s的概率密度均匀(均衡化)
(5)离散情况下的算法: A、列出原始图像的灰度级 B、统计各灰度级的像素数目 C、计算原始图像直方图各灰度级的频数 D、计算累积分布函数 F、应用以下公式计算映射后的输出图像的灰度级,P为输出图 像灰度级的个数,其中INT为取整符号:
G、用映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。G、用映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。
(6)直方图均衡化的效果 1) 由于数字图像是离散的,因此直方图均衡化并不能产 生具有理想均衡直方图的图像,但可以得到一幅灰度分布更为均匀的图像。 2)变换后一些灰度级合并,因此灰度级减少。 3)原始象含有象素数多的几个灰级间隔被拉大了,压缩的只是象素数少的几个灰度级,实际视觉能够接收的信息量大大地增强了,增加了图象的反差和图象的可视粒度。
(7)MATLAB实现 语法:g=histeq(f, nlev) 说明:nlev是为输出图像制定的灰度级数。 f = imread ( ‘tire.tif’); imshow(f); figure,imhist(f); ylim(‘auto’); %自动设定y轴坐标范围和刻度 g=histeq(f,256); figure, imshow(g); figure,imhist(g); ylim(‘auto’);
补充材料:直方图均衡化的缺陷 1 直方图均衡化的问题 不能实现直方图的理想均衡。 2原因分析 数字图像是离散的。直方图均衡化方法是一对一或者多对一的映射关系,即原图像的某一灰度级或某几个灰度级只能映射为均衡化图像的一个灰度级,因此不能实现理想的均衡。 3创新思路 要想实现直方图的理想均衡化,就必须破除传统直方图均衡化方法所蕴含的一对一或者多对一映射关系的理论前提,实现灰度级多对多的映射关系。
4技术路线 (1)邻域测度 邻域测度(或邻域算子)定义为: k>0,是锐化系数。 下面解释公式的物理含义。当f(x,y)比它的8邻域均值大时,变换后邻域测度将比f(x,y)大;相应的,当f(x,y)比它的8邻域均值小时,变换后邻域测度将比f(x,y)小。因此,邻域测度(或邻域算子)可以看作为一个锐化算子,k(锐化系数)的大小决定了锐化的强度。
(2)排序 对邻域测度空间的值进行由小到大的排序。 (3) 均匀分段 排序完成后,按照原始图像的灰度级数进行均匀分段。例如,如果原始图像是256灰度级的,则均匀分为256段,每段的像素的数目基本相等,最多相差1。 (4)均衡化映射 按分段的先后顺序,每段中的数据分别赋值为0,1,…,L-1(L为灰度级数)。然后,每段中的每个数据根据在排序过程中保存的位置关系,映射回图像中。
3.4 用算术/逻辑操作增强 1 算术操作 (1)加法操作 C(x,y) = A(x,y) + B(x,y) A、图像叠加(特技处理)
(2)减法操作 C(x,y) = A(x,y) - B(x,y) 减法的最主要作用是突出两幅图像的差异,常用于医学影像中的变化监测,或固定场景中的运动监测。
(3)乘法操作(乘以常数、模板操作等) 除法操作(一幅图像乘以另一幅图像的取反) (4)MATLAB实现 K1=imadd(I, J); %两幅图像加 K2=imsubtract(rice,50); %图像减一个常数 K3=immultiply(I, 2); %图像乘一个常数 K4=imdivide(I,2); %图像除一个常数
减法例子: rice=imread(‘rice.tif’); background=imopen(rice,strel(‘disk’,15)); rice2=imsubtract(rice,background); subplot(1,2,1),imshow(rice); subplot(1,2,2),imshow(rice2); 加法例子: I=imread(‘rice.tif’); J=imrea(‘cameraman.tif’); k=imadd(I,J); imshow(K);
乘法例子: I=imread(‘moon.tif’); J=immultiply(I,1.2); subplot(1,2,1), imshow(I); subplot(1,2,1), imshow(J); 除法例子: rice=imread(‘rice.tif’); I=double(rice); J=I*0.43+90; rice2=uint8(J); Ip=imdivide(rice,rice2); imshow(Ip,[ ]);