第五章 图像增强 附实验

5.1前言,基础概念与分类

  1. 图像增强的目的:改善图像的视觉效果,或将图像转换成更适合于人眼观察和机器分析识别的形式,以便从图像中获取更有用的信息
  2. 有针对性的,注意主观为导向,并不存在通用的增强算法,与受关注物体的特性、观察者的习惯和处理目的相关。
  3. 没有一个图像增强的统一理论,如何评价图像增强的结果好坏也没有统一的标准。

图像增强方法分为两大类:空间域方法频率域方法

空间域方法:

  1. 对图像的像素直接处理为基础。
  2. 包括点处理,模板处理(邻域处理)

频率域方法:

  1. 以修改图像的傅里叶变换为基础。
  2. 高、低通滤波,同态滤波等。

5.2空间域图像增强

空间域增强是指在空间域中,通过线性或非线性变换来增强构成图像的像素。

增强的方法主要分为点处理模板处理两大类:

  1. 点处理是作用于单个像素的空间域处理方法,包括图像灰度变换直方图处理伪彩色处理等技术。
  2. 模板处理是作用于像素邻域的处理方法,包括空域平滑空域锐化等技术。

基于灰度变换的图像增强

将输入图像 f(x,y)的灰度r,通过映射函数映射成输出图像g(x,y) 中的灰度 s,其运算结果与图像像素位置及被处理像素邻域灰度无关。

简单来说就是对每一个像素点通过一个函数做一个变换

灰度线性变换

灰度线性变换表示对输入图像灰度作线性扩张或压缩,映射函数为一个线性方程:g(x,y)=a*f(x,y)+b。

b=0,且

  • a>1:对比度扩张
  • a<1:对比度压缩
  • a=1:相当于复制

b!=0:灰度偏置

在曝光不足或过度的情况下,图像灰度可能会局限在一个很小的范围内。这时在显示器上看到的将是一个模糊不清、似乎没有灰度层次的图像。采用灰度线性变换方法可以拉伸灰度动态范围,使图像清晰。

分段线性变换函数

与线性变换相类似,只是对不同灰度范围进行不同的映射处理。可用于突出关注目标所在的灰度区间,相对抑制那些不受关注的灰度区间。

反转变换

反转变换适用于增强嵌入于图像暗色区域的白色或灰色细节,特别是当黑色面积占主导地位时。简单来说就是黑的变白,白的变黑。

s=L-r

L一般是最大灰度值255,r是像素点原来灰度值,s是变换之后的灰度值。

对数变换

对数变换的通用形式为s=c*log(1+r)。

其中c是一个常数,并假设r≥0。该变换将扩张数值较小的灰度范围,压缩数值较大的图像灰度范围。使用这种类型的变换来扩展图像中的暗像素的值,同时压缩更高灰度级的值。

当这些值在一个8比特系中被线性地缩放显示时,最亮的像素将支配该显示,频谱中的低值将损失掉。利用对数变换后再显示,就能发现这幅图像的细节是很丰富的。

幂次变换

幂次变换的通用形式为s=c*r^γ。

幂次变换通过幂次曲线中的 值把输入的窄带值映射到宽带输出值。 当γ<1时,把输入的窄带暗值映射到宽带输出亮值当γ>1时,把输入的窄带高值映射为宽带输出亮值

基于直方图处理的图像增强

灰度级直方图是图像的一种统计表达,它反映了该图中不同灰度级出现的统计概率。灰度级[0,L-1]范围的数字图像的直方图具有如下离散函数:h(k)=nk

式中,k是k级灰度,nk是图像中灰度级为k的像素个数。进行归一化,则概率Pr(k)=n_k/。n为图像中像素的总数。
由于图像的视觉效果与直方图有对应关系,即直方图的形状改变对视觉的感知影响很大,因此采用直方图变换的方式可以增强图像。

上述给出4中基本的图像类型:暗图像,亮图像,低对比度图像和高对比图像。

  1. 图像直方图描述图像中各灰度级出现的相对频率,基于直方图的灰度变换,可调整图像直方图到一个预定的形状。
  2. 从人眼的视觉特性来考虑,一幅图像的直方图如果是均匀分布的,该图像色调给人的感觉会比较协调。

直方图均衡化

设变量r代表图像中像素灰度级,作归一化处理使得0≤r ≤ 1。用概率密度函数pr®来表示原始图像的灰度分布。

直方图均衡化的目的:寻找一个灰度变换函数T,使变化后的灰度值满足s=T®,其中0≤s ≤ 1,建立r与s之间的映射关系,要求处理后图像灰度分布的概率密度函数ps(s)=1,即变换后概率密度为[0,1]上的均匀分布,期望所有灰度级出现概率相同

计算步骤:

  1. 统计原始图像的直方图。
  2. 计算直方图累积分布曲线
    。注意sk=n1/n+n2/n+······+nk/n。
  3. 用累积分布函数作变换函数进行图像灰度变换:根据计算得到的累积分布函数,建立输入图像与输出图像灰度级之间的对应关系,即重新定位累计分布函数 (与归一化灰度等级 比较,寻找最接近的一个作为原灰度级k变换后的新灰度级)。

直方图均衡化的实质是减少图像的灰度级以换取对比度的加大。在均衡过程中,原来的直方图上频数较小的灰度级被归入很少几个或一个灰度级内。若这些灰度级所构成的图像细节比较重要,则需采用局部区域直方图均衡。

如图,前三种结果显示了重要的改进效果。而直方图均衡化对第4幅图像未产生太大的效果,是因为该图像的灰度已经扩展到了全部灰度级范围。
有趣的是,尽管这些直方图不同,但直方图均衡后的图像本身在视觉上却是非常相似的,是因为左边一列图像之间的差异仅仅是对比度上的,而不是内容上的。

空间域图像增强

空间域滤波基础

滤波一词借用于频率处理,在频率域“滤波”是指通过或拒绝一定的频率分量。例如,通过低频的滤波器称为低通滤波器。低通滤波器的最终效果是模糊或平滑一幅图像。可以用空间滤波器(也称空间掩模、核、模版和窗口)直接作用于图像本身而完成类似的平滑。

空间滤波器由:一个邻域(典型地是一个较小的矩形)和对该邻域包围的图像像素执行的预定义操作组成。

滤波产生一个新像素,新像素的坐标等于邻域中心的坐标,像素的值是滤波操作的结果。滤波器的中心访问输入图像的每个像素,就产生了处理(滤波)后的图像。如果在图像像素上执行的是线性操作,则该滤波器称为线性空间滤波器。否则,滤波器就成为非线性空间滤波器。

边界处理

卷积核遇到图像边缘怎么办?目前有四种主流的处理方法,用一维卷积和均值滤波来说明下:

I=123456

  1. ​ 第一种就是想象I是无限长的图像的一部分,除了我们给定值的部分,其他部分的像素值都是0。I=0012345600。
  2. 第二种方法也是想象I是无限图像的一部分。但没有指定的部分是用图像边界的值进行拓展。I=1112345666。
  3. 认为图像是周期性的。也就是I不断的重复。周期就是I的长度。I=5612345612。
  4. 最后一种情况就是不管其他地方了。我们觉得I之外的情况是没有定义的,所以没办法使用这些没有定义的值,所以要使用图像I没有定义的值的像素都没办法计算。简单来说就是不要了。所以输出J会比原图像I要小。

特点

  1. 空间域滤波增强采用模板处理方法对图像进行滤波,以去除图像噪声或增强图像的细节
  2. 空间域滤波增强时,模板的中心从一个像素向另一个像素移动,通过模板运算得到该点的输出,常用模板是一个3x3的二维阵列,模板的系数值决定了处理的性质,如图像平滑或锐化等。

假设图像是由许多灰度恒定的小块组成,相邻像素间存在很高的空间相关性,而噪声则是统计独立的。因此,可用邻域内各像素的灰度平均值代替该像素原来的灰度值,实现图像的平滑。

局部平滑法

例如,使用3x3的邻域平均法。

(m-1,n-1) (m-1,n) (m-1,n+1)
(m,n-1) (m,n) (m,n+1)
(m+1,n-1) (m+1,n) (m+1,n+1)

因此有g(m,n)=1/9*∑f(m+i , n+j)。

定理:信号与噪声的方差比可以提高(2s+1)(2*t+1)倍。

局部平滑法在降低噪声的同时也使图像变得模糊了,特别在图像的边缘和细节出。邻域越大,去噪能力越强,同时模糊程度越严重

空间低通滤波

局部平均法可看做一个掩模作用于图像f(x,y)的低通空间滤波,掩模就是一个滤波器,滤波输出的数字图像g(x,y)用离散卷积表示为

常用的掩模有:

掩模不同,中心点或邻域的重要程度也不相同,因此,应根据问题的需要选取合适的掩模。但不管什么样的掩模,必须保证全部权系数之和为单位值,这样可保证输出图像灰度值在许可范围内,不会出现“溢出”现象。

定理:上述图像平滑滤波(a)实际相当于对f(x)进行低通滤波,即h(x)为低通滤波器

证明,以掩膜[[1,1,1],[1,2,1],[1,1,1]]为例,计算其传递函数

令v=0,w=2Πu/n,则H=1/5(2+3*cos w)

  • 当w=0°时,H=1

  • 当w=90°时,H=2/5

  • 当w=131°时,H=0

  • 当w=180°时,H=-1/5

可见该掩模为低通滤波器的传递函数。

假设Df表示输入图像f(x,y)相邻像素的灰度最大绝对差; Dg表示处理后图像g(x,y)相邻像素的灰度绝对差,则由上述方程有:Dg<=Df。可见,平滑处理后相邻像素灰度差别只会减小,不会加大,起到了平滑作用。

步骤:

  1. 将模板在图像中沿着x方向或y方向滑动,并将模板中心与图中某个象素位置重合。
  2. 将模板上系数与模板下对应象素相乘。
  3. 将所有乘积相加求和。
  4. 将和(模板的输出响应)赋给图中对应模板中心位置的象素。

空间域锐化滤波

在图像的识别中常需要突出边缘和轮廓信息,图像锐化就是增强图像的边缘或轮廓。图像平滑通过积分过程使得图像边缘模糊,图像锐化则通过微分而使图像边缘突出、清晰。

梯度锐化法

图像f(x,y),在(x,y)处的梯度定义为

梯度是一个矢量。

梯度锐化算子

对于离散图像处理而言,常用到梯度的大小,采用一阶差分近似表示。

为简化梯度计算,经常使用

梯度的近似值和相邻象素的灰度差成正比,因此在图像变化缓慢区域,其值很小,而在线条轮廓等变化快的部分其值很大,梯度运算可使细节清晰,从而达到锐化的目的。

Roberts交叉梯度算子

模板如下:

w1对接近45o边缘有较强响应;w2对接近-45o边缘有较强响应。

Prewitt梯度算子

在锐化图像边缘的同时减少噪声的影响,Prewitt从加大边缘增强算子的模板大小出发,模板如下

w1对水平边缘有较大相应的竖直梯度;w2对竖直边缘有较大相应的水平梯度。

Sobel梯度算子

Sobel在Prewiit算子的基础上,对4-邻域采用带权的方法计算差分,模板如下

w1对水平边缘有较大相应的竖直梯度;w2对竖直边缘有较大相应的水平梯度。

拉普拉斯算子

对应的模板

在锐化增强中,绝对值相同的正直和负值实际上表示相同的响应,故也等同于上述模板中数值均为负值的情况。

拉普拉斯算子对于接近水平和接近竖直方向的边缘都有很好的增强,从而避免用户在使用梯度算子时要进行两次滤波的麻烦。

5.3频率域图像增强

频率域图像增强是通过傅里叶变换,把空间域混叠的成分在频率域中分离开来,从而提取或滤去相应的图像。常用方法包括低通滤波、高通滤波、同态滤波等。

原图->傅里叶变换->乘以模板->反变换

关键在于设计频域(变换域)滤波器的传递函数H(u,v)

频率域平滑滤波器

理想低通滤波器

输入信号在通带内所有频率分量完全无损地通过,而在阻带内所有分量完全衰减。理想低通滤波器有陡峭频率的截至特性,但会产生振铃现象使图像变得模糊,该滤波器具有物理不可实现性

设傅里叶平面上理想低通滤波器离开原点的截至频率为D0 。

传递函数

巴特沃斯Butterworth低通滤波器

n阶Butterworth低通滤波器的传递函数为

式中,D0为截至频率。n阶Butterworth低通滤波器比较平滑,连续性衰减,不像理想滤 波器那样陡峭变化。

指数低通滤波器

指数型低通滤波器是图像处理中常用的一种平滑滤波器,如下图所示。它的传递函数为

常用的指数型低通滤波器是高斯低通滤波器,传递函数为:

频率域锐化滤波器

图像的边缘、细节主要位于高频部分,而图像的模糊是由于高频成分比较弱产生的。频率域锐化就是为了消除模糊,突出边缘因此采用高通滤波器让高频成分通过,使低频成分削弱,再经傅立叶逆变换得到边缘锐化的图像。

理想高通滤波器

二维理想高通滤波器的传递函数为

巴特沃斯高通滤波器

n阶巴特沃斯高通滤波器的传递函数定义如下

指数高通滤波器

指数高通滤波器的传递函数定义如下

同态滤波器

原理:真实的图像除了有加性噪声外,往往还存在乘性或卷积性噪声。此时,直接用频域滤波的方法,将无法消减乘性或卷积性噪声。同态滤波基本思想是将非线性问题转化成线性问题处理,即先对非线性混杂信号作某种数学运算,变换成加性的,然后用线性滤波方法处理,最后作逆运算,恢复处理后图像

使用同态滤波器可更好地控制照射分量和反射分量。这种控制需要制定一个滤波器函数H(u,v)来规范,它可用不同的可控方法影响傅里叶变换的低频和高频分量。

该滤波器函数趋向于衰减低频的贡献,而增强高频的贡献。最终结果是同时进行动态范围的压缩和对比度的增强。传递函数H(u,v)可以是高斯型高通滤波器稍微修改过的形式

常数c控制函数坡度的锐利度,它在γ H和γL之间过渡。

5.4实验 图像增强

实验内容

(1)对曝光不足的图像采用灰度线性变换对图像每一个像素灰度做线性拉伸。

(2)利用空间域平滑滤波器对图像进行平滑。

(3)利用Prewitt、Sobel对图像进行锐化。

(4)利用高斯低通滤波对图像进行平滑。

实验步骤

实验1

I=imread('figure51.jpg');
I=im2double(I);figure;
subplot(1,2,1);
imshow(I);
title(''),xlabel('原图');
a = 1.5;
b = -150;
I2 = a .* I + b/255;
subplot(1,2,2);
imshow(I2);
title(''),xlabel('a=1.5 b=-150 增强对比度'); I=imread('figure51.jpg');
I=im2double(I);

实验2

I=imread('lena.jpg');
subplot(2,3,1);imshow(I);title(''),xlabel('原图'); I_noise=double(imnoise(I,'gaussian',0.05));
subplot(2,3,2);imshow(I_noise,[]);title(''),xlabel('添加均值为0 方差为0.005的噪声');
I_smoothed1=imfilter(I_noise,fspecial('average',3));
subplot(2,3,4);imshow(I_smoothed1,[]);title(''),xlabel('3*3 邻域平滑的图像');I_smoothed2=imfilter(I_noise,fspecial('average',5));
subplot(2,3,5);imshow(I_smoothed1,[]);title(''),xlabel('5*5邻域平滑的图像');I_smoothed3=imfilter(I_noise,fspecial('average',7));
subplot(2,3,6);imshow(I_smoothed3,[]);title(''),xlabel('7*7邻域平滑的图像');

实验3

I=imread('lena.jpg');
figure;
subplot(2,2,1);imshow(I);I_noise=double(imnoise(I,'gaussian',0.05));
subplot(2,2,2);imshow(I_noise,[]);I_sharp1=imfilter(I,fspecial('Prewitt'));
subplot(2,2,3);imshow(I_sharp1,[]);I_sharp2=imfilter(I,fspecial('Sobel'));
subplot(2,2,4);imshow(I_sharp2,[]);%+++++++++++++++++++++++
%第二种自己实现Sobel = Image_Sobel(Image);
Prewitt = Image_Prewitt(Image);function [IMAGE] = Image_Prewitt(Image)
[m,n,bands] = size(Image);
A = 1;
Prewittx = [-1 -2 -1;0 0 0;1 2 1];
Prewitty = [-1 0 1;-2 0 2;-1 0 1];
Image1 = zeros(m,n,bands);
IMAGE = Image;
%Sobel算子
for k = 1:bandsfor i = 1+A:m-Afor j = 1+A:n-Atemp = Image(i-A:i+A,j-A:j+A,k);Image1(i,j,k) = abs(sum(sum(Prewittx.*temp)))+abs(sum(sum(Prewitty.*temp)));endend
end
IMAGE = Image + Image1;
figure(1);
subplot(2,2,1);
imshow(uint8(Image));xlabel('原始图像');
subplot(2,2,2);
imshow(uint8(IMAGE));
xlabel('Prewitt锐化后的图像');
endfunction [IMAGE] = Image_Sobel(Image)
[m,n,bands] = size(Image);
A = 1;Sobelx = [-1 -2 -1;0 0 0;1 2 1];
Sobely = [-1 0 1;-2 0 2;-1 0 1];
Image1 = zeros(m,n,bands);
IMAGE = Image;
for k = 1:bandsfor i = 1+A:m-Afor j = 1+A:n-Atemp = Image(i-A:i+A,j-A:j+A,k);Image1(i,j,k) = abs(sum(sum(Sobelx.*temp)))+abs(sum(sum(Sobely.*temp)));endend
end
IMAGE = Image + Image1;figure(1);
subplot(2,2,3);
imshow(uint8(Image));
xlabel('原始图像');
subplot(2,2,4);
imshow(uint8(IMAGE));
xlabel('Sobel锐化后的图像')
end

实验4


I=imread('lena.jpg');I1=fftshift(fft2(I));
[M,N]=size(I1);
n=2;sig=10;
n1=floor(M/2);n2=floor(N/2);
for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);H=exp(-((d^2/(2*sig^2))));I2(i,j)=H*I1(i,j);end
end
I2=ifftshift(I2);
I3=real(ifft2(I2));
subplot(2,2,2);
imshow(I3,[]);n=2;sig=20;
n1=floor(M/2);n2=floor(N/2);
for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);H=exp(-((d^2/(2*sig^2))));I2(i,j)=H*I1(i,j);end
end
I2=ifftshift(I2);
I3=real(ifft2(I2));
subplot(2,2,3);
imshow(I3,[]);n=2;sig=40;
n1=floor(M/2);n2=floor(N/2);
for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);H=exp(-((d^2/(2*sig^2))));I2(i,j)=H*I1(i,j);end
end
I2=ifftshift(I2);
I3=real(ifft2(I2));
subplot(2,2,4);
imshow(I3,[]);

实验结论

实验(1)中,基于灰度线性变换的图像增强将图像的每个像素灰度做线性拉伸,可以原本模糊不清的原图变得清晰,改善视觉效果。

实验(2)中,基于空间域平滑滤波的图像增强可以降噪,但是降低噪声的同时也会使图像变得模糊,特别是在边缘和细节处,而且可以看出,邻域越大,降噪能力越强,同时图像也越模糊。

实验(3)中,基于空间域锐化滤波的图像增强,通过微分使得图像边缘和轮廓变得突出、清晰。其中,使用Prewitt算子对水平好竖直两个方向的边缘进行增强,而Sobel算子对像素的4邻域采用带权的方法计算查分,从图像中可以看出Sobel锐化的效果更加突出一些。

数字图像处理笔记 第五章 图像增强 附实验相关推荐

  1. 【基于MATLAB的数字图像处理】第四章·图像增强

    系列文章 ·[基于MATLAB的数字图像处理]第一章·绪论 ·[基于MATLAB的数字图像处理]第二章·视觉系统与图像处理系统 ·[基于MATLAB的数字图像处理]第三章·基本图像变换 ·[基于MAT ...

  2. 数字图像处理:第五章 代数运算

    第五章 代数运算 目录 引言 加法运算 减法运算(差分) 乘法运算及除法运算 作业 1. 引言 代数运算是指两幅输入图象之间进行点对点的加.减.乘.除运算得到输出图象的过程.如果记输入图象为A(x,y ...

  3. 判断图像局部过暗_数字图像处理(第五章)

    图像复原技术可以很好的应用于图像去噪领域,系统的学习图像复原原理将有助于修复一些被噪声污染的图像,我曾经遇到过被摩尔纹污染的图像,当时不知道如何进行去噪,希望这一章的学习能够给我带来解决问题的新思路. ...

  4. 【基于MATLAB的数字图像处理】第三章·基本图像变换

    系列文章 ·[基于MATLAB的数字图像处理]第一章·绪论 ·[基于MATLAB的数字图像处理]第二章·视觉系统与图像处理系统 ·[基于MATLAB的数字图像处理]第三章·基本图像变换 ·[基于MAT ...

  5. 数字图像处理学习笔记4第四章 图像变换 附实验

    第四章 图像变换 附实验 前言 图像变换:为达到某种目的将原始图像变换映射到另一个空间上,使得图像的某些特征得以突出,以便于后面的处理和识别. 4.1连续傅里叶变换 一维变换 用傅里叶变换表示的函数特 ...

  6. 数字图像处理笔记-02(图像空域增强技术及联合运用)

    数字图像处理笔记-02(图像空域增强技术及联合运用) (一) 图像增强 1.1 基本概念 由于图像在传输或者处理过程中会引入噪声或使图像变模糊,从而降低了图像质量,甚至淹没了特 征,给分析带来了困难. ...

  7. 数字图像识别笔记(第一章绪论)

    title: 数字图像识别笔记(第一章绪论) categories: 数字图像识别 tags: 数字图像识别 date: 2020/9/29 23:59 mathjax: true toc: true ...

  8. 《Go语言圣经》学习笔记 第五章函数

    <Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...

  9. 《数字图像处理》第三章学习总结感悟2:直方图处理

    ☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░ 一.引言 在2021年6月22日发布<<数字图像处理>第三章学习总结 ...

最新文章

  1. Openstack各个组件的关系简介
  2. Android SQLite数据库增删改查操作
  3. Map的Value值转换为List集合
  4. 朱晔和你聊Spring系列S1E3:Spring咖啡罐里的豆子
  5. spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用
  6. 在Ubuntu8.04上简单定制个性化的Terminal操作界面
  7. viper12a电源电路图_VIPer12A功率开关电源IC.pdf
  8. 深入Elasticsearch:索引的创建
  9. 单片机编程歌曲c语言发如雪,51单片机电子琴制作
  10. 开关电源EMI整改实例(方法)。
  11. SAP 各种记账凭证的更改冲销
  12. BCD码和ASCII码的相互转换
  13. 【爬虫】哔哩哔哩校园招聘信息
  14. Xilinx Zynq ZynqMP boot模式
  15. Mosquitto常用命令
  16. JS 手机浏览器唤醒手机QQ
  17. Linux LVM 总结
  18. Azure Kinect 使用记录 (一)
  19. android分享小程序 缩略图,微信小程序实现带缩略图轮播效果
  20. java之jsp内置对象

热门文章

  1. 使用FDM(free download manager)要小心损坏笔记本电池
  2. 据说跑分16W+ 联发科X30处理器正式发布
  3. php 获取毫秒函数,PHP实现获取毫秒时间戳的方法【使用microtime()函数】
  4. jedis和jedisPool
  5. ocm名单 oracle_OCM(Oracle认证数据库大师)
  6. 【Linux常用命令系列】 ps aux和ps -elf的区别
  7. python适合用来做什么游戏,python 主要用来做什么
  8. 今天说支付宝生活圈“高清易懂一目了然”的出来聊聊!
  9. 鸿蒙OS笔记本电脑,弃用Windows!搭载鸿蒙的笔记本电脑要来了!但首发竟不在国内?...
  10. 1.《如何构建敏捷项目管理团队》之成为好教练(摘要)