图像增强 订阅
增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合。有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。 展开全文
增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合。有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。
信息
外文名
image enhancement
类    型
频率域法和空间域法
方    法
基于空域的算法和基于频域的算法
中文名
图像增强
目    的
改善图像的视觉效果
应用领域
航空航天领域、生物医学领域等
图像增强基本信息
图像增强可分成两大类:频率域法和空间域法。前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。后者空间域法中具有代表性的算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。图像增强技术根据增强处理过程所在的空间不同,可分为基于空域的算法和基于频域的算法两大类。空域法是对图像中的像素点进行操作,用公式描述如下:g(x,y)=f(x,y)*h(x,y)其中是f(x,y)是原图像;h(x,y)为空间转换函数;g(x,y)表示进行处理后的图像。基于空域的算法处理时直接对图像灰度级做运算,基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。基于空域的算法分为点运算算法 [1]  和邻域去噪算法 [2]  。点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。邻域增强算法分为图像平滑和锐化两种。平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。锐化的目的在于突出物体的边缘轮廓,便于目标识别。常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。
收起全文
精华内容
下载资源
问答
  • 2021-10-14 13:13:23

    空域图像增强+频域图像增强


    前言

    图像处理基础知识也很重要,不然在matlab里键入代码就是一头雾水,今天是空域图像增强和频域图像增强</font>


    空域图像增强

    空域:指图像平面本身
    【频域:对图像进行傅里叶变换等频域变换】
    空域图像增强:
    直接作用于像素改变其特性的增强方法

    • 点操作
    • 模板操作/领域操作:板操作则主要通过设计模板系数来实现不同的增强操作

    图像的数据结构:uint8 ,uint16 , double

    一.灰度映射:点处理

    灰度级范围不变

    1.图像求反(将灰度值翻转)

    反转变换表达式:

    						t = (L-1)-s 
    		(L为总的灰度级数,s为当前灰度级)
    

    matlab实例如下:

    A = imread('circuit.tif');
    B = 255 - A;
    subplot(121);imshow(A);title('原图');
    subplot(122);imshow(B);title('图像求反');
    

    2.对数变换(动态范围压缩)

    动态范围压缩:与增强对比度相反

    		t = C log( 1 + |s| )
    
    A = imread('circuit.tif');
    c = 50
    B = c*log(double(A)+1);
    subplot(121);imshow(A);title('原图');
    subplot(122);imshow(uint8(B));title('对数变换');
    

    用途:扩展暗区
    在这里插入图片描述

    3.幂次变换

    			s = c*r^γ
    

    具有对数变换相似的作用,但是更加灵活
    γ>1压缩灰度
    γ<1扩展灰度

    f1 = imread('lena.bmp');
    f = rgb2gray(f1);
    minvalue = double(min(min(f)));
    maxvalue = double(max(max(f)));
    range = maxvalue - minvalue;
    Min = 0;
    Max = 255;
    Range = Max - Min;
    f = Range * (double(f) - minvalue)/range + Min;
    %对图像进行灰度归一化实现f = mat2gray(I,[0,255]);功能
    Gamma = 0.9;%设定gamma的值
    s1 =double(f).^Gamma;%进行gamma变换
    Gamma = 1.2;
    s2 =double(f).^Gamma;
    figure;
    subplot(1,3,1);
    imshow(uint8(f));
    title('原图');
    subplot(1,3,2);
    imshow(uint8(s1));
    title('伽玛变换(gamma=0.9)');
    subplot(1,3,3);
    imshow(uint8(s2));
    title('伽玛变换(gamma=1.2)');
    

    结果:在这里插入图片描述
    γ>1压缩灰度,细节丢失
    γ<1扩展灰度

    4.阶梯量化

    将图像灰度分阶段量化成较少的级数,达到数据量压缩的效果
    (将图像灰度分阶段量化成较少的级数,这可在保持原图动态范围的基础上,减少灰度级数,即减少表示灰度所需的比特数,从而获得数据量压缩的效果。这里的映射是多对一的,不仅灰度值s会映射成灰度值t,而且在灰度值s前后一定范围内的灰度值也会映射成灰度值t )

    5.阈值切分(二值化)

    大于阈值255
    小于阈值 0
    对比度最大但是细节全丢失了

    f = imread('circuit.tif');
    thresh = graythresh(f);     %自动确定二值化阈值
    f1 = im2bw(f,thresh);
    subplot(121);
    imshow(f);
    title('原图');
    subplot(122);
    imshow(f1);
    title('二值化');
    

    在这里插入图片描述

    (有点艺术那味了,喜欢hhh)

    6.分段线性变换函数

    二.图像运算:集合处理

    1.算术运算(对灰度图像):

    加减乘除
    上面各运算的含义是指通过算术运算从两个像素的灰度值得到一个新的灰度值,作为对应结果新图像相同位置处像素的灰度值。新灰度值有可能超出原图像的动态范围,此时常需要进行灰度映射,以将运算结果的灰度值限制在或调整到原图像允许的动态范围内

    加法:

    用图像平均消除随机噪声
    (噪声互不相关,且具有零均值)
    高斯噪声?

    减法:

    设有图像f(x, y)和h(x, y),对它们进行相减运算,显示两幅图像间的差异
    ——可用于运动检测(照明恒定,差值不为0处表示像素有移动)

    2.逻辑运算(二值图,逻辑图):与/或/非

    三.直方图修正:直方图处理

    1.图像的直方图:反映了图像的基本灰度级特征(暗,亮,低对比度,高对比度)
    借助对图像直方图的修改或变换,可以改变图像像素的灰度分布,从而达到对图像进行增强的目的

    直方图均衡化

    Aim: 增强动态范围偏小的图像的反差
    个方法的基本思想是把原始图的直方图变换为在整个灰度范围内均匀分布的形式,这样就增加了像素灰度值的动态范围,从而可达到增强图像整体对比度的效果
    累计直方图重新量化,形成基本均匀的分布

    f = imread('baboon1.bmp');
    f = rgb2gray(f);%灰度化
    [m,n] = size(f);
    GP = zeros(1,256);
    for k = 0:255
        GP(k+1) = length(find(f == k))/(m*n);
    end
    S1=zeros(1,256);
    for i = 1:256
        for j = 1:i
            S1(i)=GP(j)+S1(i);
        end
    end
    S2 =round((S1*256)+0.5);
    for i = 1:256
        GPeq(i) = sum(GP(find(S2 == i)));
        end
    figure;
    subplot(221);
    bar(0:255,GP,'b');
    title('原图像直方图') 
    subplot(222);
    bar(0:255,GPeq,'b')
    title('均衡化后的直方图')
    X = f;
    for i = 0:255
        X(find(f==i)) = S2(i+1);
    end
    subplot(223);
    imshow(f);
    title('原图像');
    subplot(224);
    imshow(X);
    title('直方图均衡化后的图像');
    

    在这里插入图片描述
    直方图规定化:
    单映射规则SML
    组映射规则GML?
    咋算的?

    四.空域滤波:模板处理

    用像素及像素邻域组成的空间进行图像增强的方法

    线性滤波——卷积

    空域滤波器分类:
    按照效果分:

    平滑滤波器:消除噪声,减弱或消除图像中高频率分量
    锐化滤波器:使图像反差增强,边缘明显,减弱或消除图像中的低频率分量

    按运算性质分:

    线性:卷积
    非线性:逻辑运算,“卷积,算术,逻辑”的混合运算

    高斯平滑滤波器

    根据高斯概率分布来确定模板的各系数值

    中值滤波器

    非线性平滑滤波器

    中值滤波器的主要功能就是让与周围像素灰度值的差比较大的像素改取与周围像素值接近的值,所以它对孤立的噪声像素的消除能力是很强的。由于它不是简单地取均值,因而产生的模糊比较少。换句话说,中值滤波器既能消除噪声又能保持图像的细节

    (相比于均值滤波,中值滤波边缘轮廓比较清晰)

    线性锐化滤波器

    线性锐化滤波器的模板仅中心系数为正而周围的系数均为负值
    在图像处理中一般限制图像的灰度值为正,所以卷积锐化后还需将输出图像灰度值范围通过变换变回到原图像的灰度范围

    图像的梯度算子

    1.sobel微分算子:

    一阶导数最大值寻找边界
    需要x方向图像就对y求微分,需要y方向图像就对x求微

    在学习的时候看到这个写的不错,贴这儿
    仔细看看,最好算算

    2.拉普拉斯Laplacian算子:

    利用二阶导数为0寻找边界

    • 课后习题未做

    频域图像增强

    频域增强:通过改变图像中不同频率分量实现增强,而非逐个像素处理

    卷积理论是频域技术的基础。设函数f(x, y)与线性位移不变算子h(x, y)的卷积结果是g(x, y),即g(x, y) = h(x, y) * f(x, y)
    那么根据卷积定理在频域有G(u, v)=H(u, v)F(u, v),其中G(u, v),H(u,v),F(u, v)分别是g(x, y),h(x, y),f(x, y)的傅里叶变换。用线性系统理论的话来说,H(u, v)是**转移函数
    **
    这样具有所需特性的g(x, y)就可得到:
    g(x, y)=F–1[H(u, v)F(u, v)]
    ps: u,v均为频率变量

    1.傅里叶变换

    傅里叶变换
    (1)计算需增强图的傅里叶变换。
    (2)将其与一个(根据需要设计的)转移函数相乘。(3)再将结果傅里叶反变换以得到增强的图。

    2-D傅里叶变换
    在这里插入图片描述
    一个2-D离散函数的傅里叶变换在原点的值(零频率分量)与该函数的均值成正比

    卷积定理指出:两个函数在空间的卷积与它们的傅里叶变换在频域的乘积构成一对变换,而两个函数在空间的乘积与它们的傅里叶变换在频域的卷积构成一对变换

    相关定理指出:两个函数在空间的相关与它们的傅里叶变换(其中一个为其复共轭)在频域的乘积构成一对变换,而两个函数(其中一个为其复共轭)在空间的乘积与它们的傅里叶变换在频域的相关构成一对变换。即[插图]如果f(x)和g(x)是同一个函数,称为自相关;如果f(x)和g(x)不是同一个函数,称为互相关
    ??????没懂

    f = imread('circuit.tif');
    f = im2gray(f);
    F1 = fft2(f);%傅里叶变换
    F2 = fftshift(F1);%中心化
    F1m = abs(F2);
    F11 = log(F2);
    figure;
    imshow(uint8(F1m));
    

    2.频域增强基本概念

    图像的傅里叶变换用F(u, v)表示,滤波器的频域函数用H(u, v)表示,增强后图像的傅里叶变换用G(u, v)表示,则要实现低通滤波就需要选择一个合适的H(u, v)以得到能减弱F(u, v)高频分量的G(u, v)

    3.低通滤波器——频域平滑

    低频通过,高频衰减,用于减少尖锐的细节变化

    理想低通滤波器 (ILPF)

    		H(u,v) =  1, D(u,v)<Do || D(u,v)==Do
    		H(u,v) =  0, D(u,v)>Do
    

    D(u, v)是从点(u, v)到频率平面原点的距离,D(u, v)=(u2+v2)1/2
    大于截止频率Do(D0是一个非负整数)为0,小于等于为1

    会出现振铃效应

    巴特沃斯低通滤波器(BLPF)

    		H(u,v) = 1 / (1 + [D(u,v) / Do]^2n)
    

    一阶无振铃,阶数越高振铃越明显

    高斯低通滤波器(GLPF)

    高斯低通滤波器没有振铃

    4.高通滤波器——频域锐化

    傅里叶变换中,低频主要决定图像在平滑区域中总体灰度级的显示,而高频决定图像细节部分,如边缘和噪声

    高频通过,低频衰减
    使图像更为锐化

    滤波器函数:低通滤波器的反操作

    	**H**hp(u,v) = 1 - **H**lp(u,v)
    

    理想高通滤波器 (IHPF)

    		H(u,v) =  0, D(u,v)<Do || D(u,v)==Do
    		H(u,v) =  1, D(u,v)>Do
    

    大于截止频率Do为1,小于等于为0

    会出现振铃效应

    巴特沃斯高通滤波器(BHPF)

    		H(u,v) =1 / (1 + [ Do / D(u,v) ]^2n)
    

    由于高低频率之间的过渡比较光滑,所以振铃效应不明显

    高斯高通滤波器(GHPF)

    特殊高通滤波器

    高通增强滤波器

    通过对频域里高通滤波器的转移函数加一个常数以将一部分(本要滤除的)低频分量加回到滤波结果中,从而获得较好的视觉效果
    公式

    高频提升滤波器

    如果把原始图乘以一个放大系数A再减去低通图就可构成高频提升滤波器
    公式

    5.带通带阻与同态滤波器

    带阻滤波器

    组织一定频率范围内的信号通过,而允许其他频率范围内的信号通过
    (像把一个带子阻拦在外面)

    带通滤波器

    (让这一个带子通过)

    同态滤波器

    一方面减弱图像中的低频分量(压缩了整体的动态范围),另一方面加强高频分量(增加了图像相邻各部分之间的对比度)

    总结

    空域技术与频域技术

    空域频域
    平滑低通
    锐化高通
    平滑滤波器的模板函数的傅里叶变换低通滤波器的转移函数
    锐化滤波器的模板函数的傅里叶变换高通滤波器的转移函数
    以上就是今天学习的内容,本文介绍了一些重要概念,其中关于傅里叶变换,拉普拉斯算子,属于非常重要的内容,大概会在后续再专门写写! 然后频域图像增强也很重要,后面的带通带阻的公式后续专门写写!并且理解!
    更多相关内容
  • 暗通道水下图像增强
  • 此代码可以实现图像的去噪和增强
  • 基于深度学习的图像增强技术,包括研究背景,以及国内外研究现状。适合做计算机视觉相关技术研究人员
  • 这是图像增强代码的整理,也是基础常见的图像增强代码,共六种:Retinex图像增强(3种)、灰度拉伸、直方图均衡化、自适应直方图均衡化等,代码均可正常运行,省去了你去到处搜索的时间,更专注于自己的实验。
  • 图像增强处理:设计一套空间域与频率域结合的图像增强算法,处理以下任一组图片中的带噪声图像,去除噪声,提高图像质量。 (1)已知:噪声为随机噪声和周期噪声混合噪声; (2)要求: a)去噪处理后,计算均方误差...
  • 图像增强算法

    2018-05-22 21:45:43
    图像增强小程序可以提高图片对比度图像增强小程序可以提高图片对比度
  • c#图像增强ImageEnhance

    2018-11-13 14:53:34
    ImageEnhancec#适用于初学者,图像处理图像增强。程序可以直接跑
  • LIME低照度图像增强算法,里面包含C++程序和测试效果图像,可直接使用,效果惊人,非常值得下载!!!
  • python实现图像增强

    2018-06-09 10:37:19
    主要是深度学习模型进行图像增强,实现深度学习训练阶段做图像扩增,增加模型的泛化能力。
  • 利用retinex实现图像的增强,可应用于图像的去雾,水下图像增强等领域
  • 小波变换图像增强

    2017-09-06 20:29:45
    基于小波变换的图像增强,matlab编写,可以很好的实现图像增强,如有问题,希望大家指出,本人是初学者,也有很多的不懂得地方,
  • 为了提高图像的视觉效果,需要对图像进行图像增强处理。由于传统的图像增强方法存在诸多缺点,所以找到一种更好的图像增强算法是目前提高图像处理效果的关键。针对此问题,文中提出一种基于小波分析的图像增强技术,...
  • 低照度图像增强,opencv3.2+vs2017,C++代码。 针对全局较暗的图像能有很好的增强效果。 代码注释的很详细,也比较简单。 提供了两张图片以供测试。 若有问题,可以找我。
  • 自己编写的彩色图像自适应增强的完整代码,下载后配置环境即可运行。无C币的可以直接在我博客留言,我会发送给你。https://blog.csdn.net/u013921430/article/details/83865427
  • 一篇水下图像增强的文章,作者天大的,发表于信号处理快报
  • 使用对数交换进行图像增强 使用直方图进行图像增强 使用均衡直方图进行图像增强 使用阈值进行图像增强 使用指数交换进行图像增强
  • 图像增强python算法

    2018-10-23 21:24:40
    图像增强python算法,使用的时候直接导入jupyternotebook 中即可
  • 一种常见图像增强算法,基于Retinex理论。本代码通过vs2015编译通过,Opencv3.1.0,C++
  • C#ImageEnhance图像增强

    2016-10-13 16:30:17
    空域增强、频域增强图像锐化 支持阈值滤波、均值滤波、中值滤波 Kirsch算子、Laplace算子、Prewitt算子、Roberts算子、Sobel算子、 Butterworth高通滤波、Butterworth低通滤波、模板滤波等算法
  • Android 图像增强

    2016-05-15 15:05:48
    Android 图像增强 包含高斯、椒盐、speckle三种噪声的添加 包含均值滤波、中值滤波、低通滤波三种去噪滤波器
  • 图像增强

    万次阅读 多人点赞 2018-07-11 13:30:59
    我们还需要利用图像增强技术,对图像进行进一步处理,以得到更好的特征和视觉效果。 图像增强:  一般的图像增强方法根据增强处理过程所在的空间不同,可分为基于空域和频域的方法。基于空域的方法直接对图像进行...

        虽然随着工业相机设备技术的发展,各种型号的工业相机层出不穷。相机的分辨率、曝光时间等性能都有了极大改善。但,工业环境复杂,导致常常得到的目标图像并不是非常理想。我们还需要利用图像增强技术,对图像进行进一步处理,以得到更好的特征和视觉效果。

    图像增强:

        一般的图像增强方法根据增强处理过程所在的空间不同,可分为基于空域和频域的方法。基于空域的方法直接对图像进行处理;基于频域的方法是在图像的某种变换域内对图像的变换系数进行修正,然后再反变换到原来的空域,得到增强的图像。

        主要目的:一、是为了改善图像的视觉效果,提高图像的清晰度;

                        二、是针对给定图像的应用场合,突出某些感兴趣的特征,抑制不感兴趣的特征,以扩大图像中不同物体特征之间的差别,满足某些特殊分析的需要。

    基于空间域的图像增强:直接作用于图像像素的增强方法。

    1、灰度变换增强

        灰度变换主要针对独立的像素点进行处理,由输入像素点的灰度值决定相应的输出像素点的灰度值,通过改变原始图像数据所占的灰度范围而使图像在视觉上得到改善。

    1.1 线性灰度增强

        线性灰度增强,将图像中所有点的灰度按照线性灰度变换函数进行变换。在曝光不足或过度的情况下,图像的灰度可能局限在一个很小的灰度范围内,这时图像可能会很模糊不清。利用一个线性单值函数对图像内的每一个像素做线性拓展,将会有效地改善图像的视觉效果。

        基本原理:假设一幅图像f(x,y)变换前的的灰度范围是[a, b],希望变换后g(x,y)灰度范围拓展或者压缩至[c, d],则灰度线性变换函数表达式为:

     

                                     

        通过调整a,b,c,d,的值可以控制线性变换函数的斜率,从而达到灰度范围的拓展或压缩。

    1.2 分段线性灰度增强

        分段线性灰度增强可将需要的图像细节灰度级扩展,增强对比度,将不需要的图像细节灰度级压缩。

        基本原理:假设输入图像f(x,y)的灰度为0~M级,增强后图像g(x,y)的灰度级0~N级,区间[a,  b]、[c,d]分别为源图像和增强图像的某一灰度区间。分段线性变换函数为:

                                    

        a,b,c,d取不同的值时,可得到不同的效果。

    (1)若a=c,b=d,灰度变换函数为一条斜率为1的直线,增强图像与源图像相同;

    (2)若a>c,b<d,源图像中灰度值在区间[0,a]与[b,M]中的动态范围减小,而源图像在区间[a,b]间的动态范围增加,从而增强中间范围的对比度。

    (3)若a<c,b>d, 则源图像在区间[0,a]与[b,M]的动态范围增加,而源图像在区间[a,b]间的动态范围减小。

    由此可见,通过调整a,b,c,d,可以控制分段的斜率,从而对任意灰度区间进行拓展或者压缩。

    1.3 非线性灰度增强

        显而易见,当用非线性函数对图像灰度进行映射时,可以实现图像的非线性灰度增强。

        基本原理:常用的非线性灰度增强方法有对数函数非线性变换和指数函数非线性变换。

    (1)对数函数非线性变换

        对图像做对数非线性变换时,变换函数为:

                                                         

        通过调整a,b,c,可以调整曲线的位置与形状。利用此变换,可以使输入图像的低灰度范围得到扩展,高灰度范围得到压缩,以使图像分布均匀。

    (2)指数函数非线性变换

        对图像做指数函数非线性变换时,变换函数为:

                                                  

        通过调整a,b,c,可以调整曲线的位置与形状。利用此变换,可以使输入图像的低灰度范围得到扩展,高灰度范围得到压缩,以使图像分布均匀。

    2、直方图增强

        图像直方图描述了一幅图像的灰度级分布情况,我们从图像的灰度级的分布形态可以提供图像信息的很多特征。因此,我们通过改变图像的直方图的形态也就是改变图像的对比度了。常用的方法有直方图均衡化和直方图规定化。

        在进行直方图相关操作之前,我们肯定得知道直方图长什么样,也就是直方图统计。从数学上理解,图像直方图实际就是图像各灰度值统计特性与图像灰度值之间的函数关系,它统计的是一幅图像中各个灰度级出现的次数或者概率。从图形上说,它是一个二维图,用横坐标表示各个像素点的灰度级r;纵坐标表示对应灰度级的像素个数或者概率:

                                    

    算法实现步骤:

        (1)获取源图像的宽和高;

        (2)逐行扫描图像的像素点,并进行灰度统计;

        (3)计算各个灰度级的概率密度。

    2.1 直方图均衡化    

    2.2 直方图规定化

    3、图像平滑   

    3.1 线性滤波(Linear filter

    3.1.1 均值滤波(Simplebluring

    均值滤波实际上就是用均值替代原图像中的各个像素值。

    均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来(目标核的)像素值。对噪声图像特别是有大的孤立点的图像非常敏感,即使有极少数量点存在较大差异也会导致平均值的明显波动。

    原理分析:K为模板)

                                    

     处理后的目标点像素值 , M=Kw*kh

    OpencvAPI介绍:(一般模板选择3*35*5的)

    blur(Matsrc, Mat dst, Size(xradius, yradius), Point(-1,-1));

    //括号内依次含义:原图;处理图;size表内核的大小,Size3,3)就表示3x3的核大小;Point类型的anchor,表示锚点(即被平滑的那个点),

                             

    插曲:

    空间滤波技术分类

          一、根据空间滤波增强目的可分为:平滑滤波和锐化滤波;

             二、根据空间滤波的特点可分为:线性滤波和非线性滤波。

    (1)平滑滤波,能减弱或消除图像中的高频分量,但不影响低频分量。因为高频分量对应图像中的区域边缘等灰度值具有较大、较快变化的部分,平滑滤波将这些分量绿区可减少局部灰度的起伏,使图像变得比较平滑。实际应用中,平滑滤波即可以用来消除噪声,又可以用在提取较大的目标前过滤去除较小的细节或将目标内的小间断连接起来。

    (2)锐化滤波,能减弱或消除图像中的低频分量,但不影响高频分量。因为低频分量对应图像中灰度值缓慢变化的区域,因而与图像的整体特性如整体对比度和平均灰度值等有关。锐化滤波将这些分量滤去可使图像反差增加,边缘明显。实际应用中,锐化滤波可用于增强图像中被模糊的细节或景物的边缘。

    实验结果

    (原图含有椒盐噪声)                                (均值滤波效果图)

     

     

    分析:因为椒盐的幅值基本都是相同的,只是出现噪声点的位置是随机的,所以在统计意义下的噪声均值也不为0,因此,即使在理想情况下也无法完全去除。但从模板的含义来理解,经过均值滤波处理后,噪声部分被弱化到周围的像素点上,所以结果图上,噪声幅值减小但噪声点的颗粒面积同时变大。

    缺点(shortcoming):在降低噪声的同时使图像变得模糊,特别是在景物的边缘和细节处,模板越大,虽然噪声的抑制效果越好,但同时画面的模糊越严重。

     

    3.1.2高斯滤波(Gaussianbluring)(低通滤波器)

    高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。

    高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。进行高斯滤波的通常原因是真实图像在空间内的像素是缓慢变化的,因此临近点的像素变化不会很明显,但是随机的两个点就可能形成很大的像素差。正是基于这一点,高斯滤波在保留信号的条件下减少噪声。遗憾的是,这种方法在接近边缘处就无效了,因此高斯滤波会破平边缘。但是,高斯平滑滤波器对于抑制服从正态分布的噪声仍然是非常有效的。

     

    高斯函数

                                    

     

    二维高斯:

                                    

     

    Opencv里面API介绍:

     GaussianBlur(Matsrc, Mat dst, Size(11, 11), sigmax, sigmay);其中Size(x, y), x, y 必须是正数而且是奇数

    //GaussianBlur(const Mat& src, Mat& dst, Sizex,y,double sigmaX, double sigmaY=0,intborderType=BORDER_DEFAULT (一般默认));

    //srcdst当然分别是输入图像和输出图像;size为高斯滤波器模板大小;sigmaXsigmaY分别为高斯滤波在横线和竖向的滤波系数;borderType为边缘点插值类型。

    实验结果:

    (含有高斯噪声)                                     (高斯滤波效果图)

          

    (含有椒盐噪声)                                (高斯滤波效果图)

            

     

    分析:高斯滤波对于椒盐噪声和高斯噪声都有明显的抑制作用,但高斯滤波对于椒盐噪声的抑制效果更好。一般在不知道噪声类型的情况下都选择高斯滤波。

    3.2非线性滤波(Nonlinear filtering)

    3.2.1中值滤波(Medianbluring)

    中值滤波法是一种基于排序统计理论的一种能有效抑制噪声的非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值,也就是将中心像素的值用所有像素值的中间值(不是平均值)替换。中值滤波通过选择中间值避免图像孤立噪声点的影响,对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。这些优良特性是线性滤波方法所不具有的。此外,中值滤波的算法比较简单,也易于用硬件实现。所以,中值滤波方法一经提出后,便在数字信号处理领得到重要的应用。

        原理:

                                 

        其中,f(x,y),g(x,y)分别为原图像和处理后的图像,W为模板,通常为3*3、5*5区域,也可以有不同的形状,如线形、圆形、十字形、圆环形等。

    Opencv里面API介绍:

    medianBlur(Matsrc, Mat dest, ksize)

    //srcdst当然分别是输入图像和输出图像。ksize为均值滤波器模板大小

    实验结果:

    含有椒盐噪声)                                       (中值滤波效果图)

            

    含有高斯噪声)                                      (中值滤波效果图

          

     

    分析:结果图显示知,中值滤波对于噪声具有抑制作用,而且对于椒盐噪声,中值滤波具有很好的降噪性。但会损失一定的图像清晰度。 

    3.2.2双边滤波(BilateralFiltering)

    双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点。双边滤波能够提供一种不会将边缘平滑掉的方法,但作为代价,需要更多的处理时间。与高斯滤波类似,双边滤波会依据每个像素及其领域构造一个加权平均值,加权计算包括两个部分,其中第一部分加权方式与高斯平滑中相同,第二部分也属于高斯加权,但不是基于中心像素点与其他像素点的空间距离之上的加权,而是基于其他像素与中心像素的亮度差值的加权。可以将双边滤波视为高斯平滑,对相似的像素赋予较高的权重,不相似的像素赋予较小的权重,也可用于图像分割之中。

    双边滤波器的好处是可以做边缘保存(edge preserving),一般过去用的维纳滤波或者高斯滤波去降噪,都会较明显地模糊边缘,对于高频细节的保护效果并不明显。双边滤波器顾名思义比高斯滤波多了一个高斯方差sigmad,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波。

    原理:

              

    Opencv里面的API介绍:

    双边模糊bilateralFilter(src,dest, d=15, 150, 3);

    - 15 –计算的半径,半径之内的像数都会被纳入计算,如果提供-1 则根据sigma space参数取值

            -150 – sigma color 决定多少差值之内的像素会被计算

           - 3 – sigma space 如果d的值大于0则声明无效,否则根据它来计算d值

    //srcdst当然分别是输入图像和输出图像。d为每个像素领域的直径,sigmaColor为颜色空间的标准偏差,sigmaSpace为坐标空间的标准偏差。borderType为边缘点插值类型。

     实验结果:(原图含有高斯噪声)

               (均值滤波)                                                 (高斯滤波

        

                 (中值滤波)                                    (双边高斯滤波

       

    分析:均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重;

    高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同;

    中值模糊,虽然抑制噪声算法比均值滤波略为复杂,但保持画面清晰度的效果更好;

     高斯双边模糊是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变。

    4、图像锐化

     

    几种常见的卷积算子

    (Robert 算子)

                        

    (Sobel 算子)

                        

     (Laplance算子)

                            

    3.1 sobel算子

    Sobel 算子是一个离散微分算子(discrete differentiation operator)。 它结合了高斯平滑和微分求导,用来计算图像灰度函数的近似梯度。用于图像处理和计算机视觉,特别是在边缘检测算法中,它可以创建强调边缘的图像。它以斯坦福人工智能实验室(SAIL)的同事Irwin Sobel和GaryFeldman命名。 Sobel和Feldman在1968年SAIL的演讲中提出了“各向同性3x3图像梯度算子”的概念。从技术上讲,它是一个离散微分算子,计算图像强度函数梯度的近似值。在图像中的每一点,Sobel-Feldman算子的结果是相应的梯度向量或该向量的范数。Sobel-Feldman算子基于将图像与水平和垂直方向上的小的可分离的整数值滤波器进行卷积,因此在计算方面相对简便。另一方面,它产生的梯度近似相对粗糙,特别是对于图像中的高频变化。

    图像边缘, 边缘就是灰度值变化剧烈的地方。表示这一改变的一个方法是使用导数。是像素值发生跃迁的地方,是图像的显著特征之一,在图像特征提取、对象检测、模式识别等方面都有重要的作用。梯度值的大变预示着图像中内容的显著变化。用更加形象的图像来解释,假设我们有一张一维图形。下图2中灰度值的”跃升”表示边缘的存在,图3中使用一阶微分求导我们可以更加清晰的看到边缘”跃升”的存在。

           

           图1、 Lena                               图2、像素一维图形    

                    

                                 图 3、一阶导数

    具体是采用卷积的计算方法实现的。假设被作用的图像为  ,在两个方向上求导:

    水平变化求导:将   与一个奇数大小的内核   进行卷积。比如,当内核大小为3时,   的计算结果为图4a:

                                                

    垂直变化求导:将 I 与一个奇数大小的内核   进行卷积。比如,当内核大小为3时,   的计算结果为图4b:

                                                

    在图像的每一点,结合以上两个结果求出近似 梯度 ,如图4c:

    也可简化为:

    l 求取导数的近似值,kernel=3时不是很准确,OpenCV使用改进版本Scharr函数,算子如下:

                                      

    Opencv里面API介绍:

    cv::Sobel (

    InputArray Src // 输入图像

    OutputArray dst// 输出图像,大小与输入图像一致

    int depth // 输出图像深度.

    Int dx  // X方向,几阶导数

    int dy // Y方向,几阶导数

    int ksize, SOBEL算子kernel大小,必须是1、3、5、7、

    double scale  = 1

    double delta = 0

    int borderType =BORDER_DEFAULT)

     

    cv::Scharr (

    InputArray Src // 输入图像

    OutputArray dst// 输出图像,大小与输入图像一致

    int depth // 输出图像深度.

    Int dx.  // X方向,几阶导数

    int dy // Y方向,几阶导数.

    double scale  = 1

    double delta = 0

    int borderType =BORDER_DEFAULT)

    实验效果图:                    (原图)

                    

                (x方向的梯度变化)                                       (y方向的梯度变化)

             

                                         (sobel算子检测的边缘)

                    

                (x方向的梯度变化)                                       (y方向的梯度变化)

              

                                             (scharr算子检测的边缘)

                    

    分析:由实验图像可以明显的看出,scharr算子比sobel算子更加能突显图像的边缘细节,效果比sobel更好。

    3.2 Laplace算子

    拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性。一个二维图像函数的拉普拉斯变换是各向同性的二阶导数,定义为:

                                    

    其中,

                                     

    为了更适合于数字图像处理,将该方程表示为离散形式: 

                    

             另外,拉普拉斯算子还可以表示成模板的形式,如图5-9所示。图5-9(a)表示离散拉普拉斯算子的模板,图5-9(b)表示其扩展模板,图5-9(c)则分别表示其他两种拉普拉斯的实现模板。从模板形式容易看出,如果在图像中一个较暗的区域中出现了一个亮点,那么用拉普拉斯运算就会使这个亮点变得更亮。因为图像中的边缘就是那些灰度发生跳变的区域,所以拉普拉斯锐化模板在边缘检测中很有用。一般增强技术对于陡峭的边缘和缓慢变化的边缘很难确定其边缘线的位置。但此算子却可用二次微分正峰和负峰之间的过零点来确定,对孤立点或端点更为敏感,因此特别适用于以突出图像中的孤立点、孤立线或线端点为目的的场合。同梯度算子一样,拉普拉斯算子也会增强图像中的噪声,有时用拉普拉斯算子进行边缘检测时,可将图像先进行平滑处理。

                                

    图像锐化处理的作用是使灰度反差增强,从而使模糊图像变得更加清晰。图像模糊的实质就是图像受到平均运算或积分运算,因此可以对图像进行逆运算,如微分运算能够突出图像细节,使图像变得更为清晰。由于拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域。因此,锐化处理可选择拉普拉斯算子对原图像进行处理,产生描述灰度突变的图像,再将拉普拉斯图像与原始图像叠加而产生锐化图像。拉普拉斯锐化的基本方法可以由下式表示:

    这种简单的锐化方法既可以产生拉普拉斯锐化处理的效果,同时又能保留背景信息,将原始图像叠加到拉普拉斯变换的处理结果中去,可以使图像中的各灰度值得到保留,使灰度突变处的对比度得到增强,最终结果是在保留图像背景的前提下,突现出图像中小的细节信息。

    Opencv里面API的介绍:

    处理的步骤:

    1、 高斯模糊 – 去噪声GaussianBlur()

    2、转换为灰度图像cvtColor()

    3、拉普拉斯 – 二阶导数计算Laplacian()

    4、 取绝对值convertScaleAbs()

    5、显示结果

    cv::Laplacian(

    InputArray src,

    OutputArray dst,

    int depth, //深度CV_16S

    int kisze, // 3

    double scale = 1,

    double delta =0.0,

    int borderType = 4)

     

    实验效果图:                                  (原图)

                

                                         (laplace算子锐化后的效果)

                

    分析:通过laplace算子可以在保留背景信息的同时,将图像像素发生变化的地方,进行锐化突出,显示更多图像小的细节信息。

     

     

    3.2 Canny算子

    Canny算子与MarrLoG)边缘检测方法类似(Marr大爷号称计算机视觉之父),也属于是先平滑后求导数的方法。John Canny研究了最优边缘检测方法所需的特性,给出了评价边缘检测性能优劣的三个指标:

    好的信噪比,即将非边缘点判定为边缘点的概率要低,将边缘点判为非边缘点的概率要低;

    高的定位性能,即检测出的边缘点要尽可能在实际边缘的中心;

    对单一边缘仅有唯一响应,即单个边缘产生多个响应的概率要低,并且虚假响应边缘应该得到最大抑制。

    Canny法就是基于满足这3个指标的最优解实现的,在对图像中物体边缘敏感性的同时,也可以抑制或消除噪声的影响。

    Canny算子求边缘点具体算法步骤如下:

    1. 用高斯滤波器平滑图像.

    2. 用一阶偏导有限差分计算梯度幅值和方向

    3. 对梯度幅值进行非极大值抑制

    4. 用双阈值算法检测和连接边缘.

    (1)灰度化和去噪

             Canny算法通常处理的都是灰度图像,因此先把图像转变为灰度图像。

    高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,特别是对抑制或消除服从正态分布的噪声非常有效。滤波可以消除或降低图像中噪声的影响,使用高斯滤波器主要是基于在滤波降噪的同时也可以最大限度保留边缘信息的考虑。

    (2)用一阶偏导的有限差分来计算梯度的幅值和方向。

        高斯模糊的目的主要为了整体降低图像噪声,目的是为了更准确计算图像梯度及边缘计算梯度值和方向,幅值。计算图像梯度可以选择算子有Robot算子、Sobel算子、Prewitt算子等。

    图像灰度值的梯度一般使用一阶有限差分来进行近似,这样就可以得图像在x和y方向上偏导数的两个矩阵。

                                           

    这里采用更加简单明了的2x2的算子,其数学表达如下:

                                  

    (3)对梯度幅值进行非极大值抑制。

             非极大值抑制是进行边缘检测的一个重要步骤,通俗意义上是指寻找像素点局部最大值。沿着梯度方向,比较它前面和后面的梯度值进行了。

                                

                            

    (4)用双阈值算法检测和连接边缘。

       非最大信号抑制以后,输出的幅值如果直接显示结果可能会少量的非边缘像素被包

    含到结果中,所以要通过选取阈值进行取舍,传统的基于一个阈值的方法如果选择的阈值较小起不到过滤非边缘的作用,如果选择的阈值过大容易丢失真正的图像边缘,Canny提出基于双阈值(Fuzzy threshold)方法很好的实现了边缘选取,在实际应用中双阈值还有边缘连接的作用。双阈值选择与边缘连接方法通过假设两个阈值其中一个为高阈值TH另外一个为低阈值TL则有

    a.对于任意边缘像素低于TL的则丢弃

    b.对于任意边缘像素高于TH的则保留

    c.对于任意边缘像素值在TL与TH之间的,如果能通过边缘连接到一个像素大于TH而且边缘所有像素大于最小阈值TL的则保留,否则丢弃。

     

    Opencv里面API介绍:

             Canny算法介绍 – 五步

    1.    高斯模糊 - GaussianBlur

    2.    灰度转换 - cvtColor

    3.    计算梯度 – Sobel/Scharr

    4.    非最大信号抑制

    5.    高低阈值输出二值图像

    API – cv::Canny(

    InputArraysrc, // 8-bit的输入图像

    OutputArrayedges,// 输出边缘图像, 一般都是二值图像,背景是黑色

    doublethreshold1,// 低阈值,常取高阈值的1/2或者1/3

    doublethreshold2,// 高阈值

    intaptertureSize,// Soble算子的size,通常3x3,取值3

    boolL2gradient // 选择 true表示是L2来归一化,否则用L1归一化)

    实验效果图:                              (原图)

                    

                                 (canny算子检测边缘结果)

                    

    分析:由结果图看出,通过canny算子检测得到的图像边缘确实效果很好,基本上能过很好的体现图像的边缘信息。

     

    *5、频率域增强

     

        低通滤波,高通滤波,带阻滤波,同态滤波;

    *6、彩色增强

        真彩色增强,假彩色增强,伪彩色增强;

     

        

    展开全文
  • 该源码为MATLAB图像处理GUI的源代码,包含图像灰度转化,二值化、边缘检测、以及图像增强、直方图均衡化等功能。
  • 基于matlab的彩色图像增强,简单算法,直方图均衡化
  • 本文先对图像增强的原理进行概述,然后对图像增强的方法分类并给出直方图增强、对比度增强、平滑和锐化等几种常用的增强方法的理论基础,通过Matlab实验得出的实际处理效果来对比各种算法的优缺点,讨论不同的增强...
  • 【计算机视觉】数字图像处理(四)—— 图像增强

    千次阅读 多人点赞 2022-01-03 11:31:45
    数字图像处理(四)—— 图像增强图像增强的定义图像增强方法一、图像增强的点运算(一)灰度变换1. 线性变换2. 分段线性变换3. 非线性灰度变换对数变换指数变换(二) 直方图修整法1. 直方图均衡化2. 直方图规定化...

    今日计划: python 字典的使用; 深浅拷贝; python 文件处理

    字符串是否存在于字典键值、

    图像增强的定义

    图像增强是采用一系列技术去改善图像的视觉效果,
    或将图像转换成一种更适合于人或机器进行分析和处理
    的形式。例如采用一系列技术有选择地突出某些感兴趣
    的信息,同时抑制一些不需要的信息,提高图像的使用
    价值。

    图像增强方法

    图像增强方法从增强的作用域出发,可分为空间域
    增强和频率域增强两种。

    空间域增强是直接对图像各像素进行处理;

    频率域增强是对图像经傅立叶变换后的频谱成分进行处理,然后逆傅立叶变换获得所需的图像。

    注:傅立叶变换常用于将图像由空间域变换为频率域,详见:数字图像处理(三)—— 图像变换原理分析

    在这里插入图片描述

    一、图像增强的点运算

    (一)灰度变换

    灰度变换可调整图像的灰度动态范围或图像对比度,是图
    像增强的重要手段之一。

    1. 线性变换

    令图像f(i,j)的灰度范围为[a,b],线性变换后图像g(i,j)的范围为[a´,b´],如图,g(i,j)与f(i,j)之间的关系式为

    在这里插入图片描述

    在这里插入图片描述

    曝光不足或过度的情况下图像灰度可能会局限
    在一个很小的范围内
    。这时在显示器上看到的将是一个
    模糊不清、似乎没有灰度层次的图像。
    下图是对曝光不足的图像采用线性变换对图像每一个像素灰度作线性拉伸。可有效地改善图像视觉效果。

    在这里插入图片描述

    2. 分段线性变换

    为了突出感兴趣目标所在的灰度区间,相对抑制那些不
    感兴趣的灰度区间
    ,可采用分段线性变换。

    设原图像 f ( x , y ) f(x,y) f(x,y) [ 0 , M f ] [0,M_f] [0Mf],感兴趣目标的灰度范围在 [ a , b ] [a,b] [a,b] ,欲使其灰度范围拉伸到 [ c , d ] [c,d] [c,d] ,则对应的分段线性变换表达式为

    在这里插入图片描述

    在这里插入图片描述
    通过细心调整折线拐点的位置及控制分段直线的斜率,可对任一灰度区间进行拉伸或压缩

    显示案例:

    在这里插入图片描述

    3. 非线性灰度变换

    当用某些非线性函数如对数函数、指数函数等,作为映射函数时,可实现图像灰度的非线性变换。

    对数变换

    对数变换的一般表达式为

    在这里插入图片描述

    这里 a,b,c 是为了调整曲线的位置和形状而引入的参数。当希望对图像的低灰度区较大的拉伸而对高灰度区压缩时,可采用这种变换,它能使图像灰度分布与人的视觉特性相匹配

    在这里插入图片描述

    指数变换

    指数变换的一般表达式为

    在这里插入图片描述
    这里参数a,b,c用来调整曲线的位置和形状。这种变换能对图像的高灰度区给予较大的拉伸

    在这里插入图片描述

    (二) 直方图修整法

    灰度直方图反映了数字图像中每一灰度级与其出现频率
    间的关系,它能描述该图像的概貌。通过修改直方图的方法
    增强图像是一种实用而有效的处理技术。

    直方图修整法包括直方图均衡化直方图规定化两类。

    1. 直方图均衡化

    直方图均衡化是将原图像通过某种变换,得到一幅灰度
    直方图为均匀分布的新图像的方法。

    在这里插入图片描述

    设r和s分别表示归一化了的原图像灰度和经直方图修
    正后的图像灰度。即

    在这里插入图片描述

    在[0,1]区间内的任一个r值,都可产生一个s值,且

    在这里插入图片描述
    T®作为变换函数,满足下列条件:
    ① 在 0 ≤ r ≤ 1 0≤r≤1 0r1 内为单调递增函数,保证灰度级从黑到白的次序不变;
    ② 在 0 ≤ r ≤ 1 0≤r≤1 0r1 内,有 0 ≤ T ( r ) ≤ 1 0≤T(r)≤1 0T(r)1 ,确保映射后的像素灰度在允许的范围内。

    反变换关系为
    在这里插入图片描述

    由概率论理论可知,如果已知随机变量r的概率密度为
    p r ( r ) p_r(r) pr(r),而随机变量 s s s r r r 的函数,则 s s s 的概率密度 p s ( s ) p_s(s) ps(s)可以由 p r ( r ) p_r(r) pr(r)求出。

    假定随机变量s的分布函数用 F s ( s ) F_s(s) Fs(s)表示,根据分布函数
    定义

    在这里插入图片描述

    利用密度函数是分布函数的导数的关系,等式两边对s
    求导,有:

    在这里插入图片描述

    可见,输出图像的概率密度函数可以通过变换函数 T ( r ) T(r) T(r)
    控制原图像灰度级的概率密度函数得到,因而改善原图像的
    灰度层次,这就是直方图修改技术的基础。

    从人眼视觉特性来考虑,一幅图像的直方图如果是均匀
    分布的,即 P s ( s ) = k P_s(s)=k Ps(s)=k (归一化时 k = 1 k=1 k=1 )时,该图像色调给人的感觉比较协调。因此将原图像直方图通过 T ( r ) T(r) T(r) 调整为均匀分布的直方图,这样修正后的图像能满足人眼视觉要求。

    因为归一化假定

    在这里插入图片描述

    在这里插入图片描述
    两边积分得

    在这里插入图片描述
    上式表明,当变换函数为r的累积直方图函数时,能达
    到直方图均衡化的目的。

    对于离散的数字图像,用频率来代替概率,则变换函数
    T ( r k ) T(r_k) T(rk) 的离散形式可表示为:

    在这里插入图片描述
    上式表明,均衡后各像素的灰度值 s k s_k sk 可直接由原图像的直方图算出

    一幅图像的 s k s_k sk r k r_k rk 之间的关系称为该图像的累积灰
    度直方图。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    直方图均衡化示例

    在这里插入图片描述

    2. 直方图规定化

    在某些情况下,并不一定需要具有均匀直方图的图像,有时需要具有特定的直方图的图像,以便能够增强图像中某些灰度级

    直方图规定化方法就是针对上述思想提出来的。直方图规定化是使原图像灰度直方图变成规定形状的直方图而对图像作修正的增强方法。

    可见,它是对直方图均衡化处理的一种有效的扩展。直方图均衡化处理是直方图规定化的一个特例。

    对于直方图规定化,下面仍从灰度连续变化的概率密度函数出发进行推导,然后推广出灰度离散的图像直方图规定化算法。

    假设 p r ( r ) p_r(r) pr(r) p z ( z ) p_z(z) pz(z) 分别表示已归一化的原始图像灰度分布的概率密度函数和希望得到的图像的概率密度函数

    首先对原始图像进行直方图均衡化,即求变换函数:

    在这里插入图片描述

    假定已得到了所希望的图像,对它也进行均衡化处理,即

    在这里插入图片描述

    它的逆变换是

    在这里插入图片描述

    这表明可由均衡化后的灰度得到希望图像的灰度。
    若对原始图像和希望图像都作了均衡化处理,则二者均衡化的 p s ( s ) p_s(s) ps(s) p v ( v ) p_v(v) pv(v) 相同,即都为均匀分布的密度函数。

    s s s 代替 v v v z = G − 1 ( s ) z=G^{-1}(s) z=G1(s)

    这就是所求得的变换表达式。根据上述思想,可总结出直方图规定化增强处理的步骤如下:

    ①对原始图像作直方图均衡化处理;
    ②按照希望得到的图像的灰度概率密度函数 p z ( z ) p_z(z) pz(z),求得变换函数 G ( z ) G(z) G(z)
    ③用步骤①得到的灰度级 s s s 作逆变换 z = G − 1 ( s ) z= G-1(s) z=G1(s)

    经过以上处理得到的图像的灰度级将具有规定的概率密度函数 p z ( z ) p_z(z) pz(z)

    采用与直方图均衡相同的原始图像数据(64×64 像素且具有8 级灰度),其灰度级分布列于表中。给定的直方图的灰度分布列于表中。 对应的直方图如下:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    利用直方图规定化方法进行图像增强的主要困难在于要构成有意义的直方图。图像经直方图规定化,其增强效果要有利于人的视觉判读或便于机器识别

    在这里插入图片描述

    图©、© 是将图像 (A) 按图 (b) 的直方图进行规定化得到的结果及其直方图。通过对比可以看出图 © 的对比度同
    图(B) 接近一致,对应的直方图形状差异也不大。这样有利于影像融合处理,保证融合影像光谱特性变化小。

    二、图像的空间域平滑

    在这里插入图片描述

    任何一幅原始图像,在其获取和传输等过程中,会受到各种噪声的干扰,使图像恶化,质量下降,图像模糊,特征淹没,对图像分析不利。

    为了抑制噪声改善图像质量所进行的处理称图像平滑或去噪。它可以在空间域和频率域中进行。本节介绍空间域的几种平滑法。

    (一)局部平滑法

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

    设有一幅 N × N N×N N×N 的图像 f ( x , y ) f(x,y) f(x,y),若平滑图像为 g ( x , y ) g(x,y) g(x,y) ,则有

    在这里插入图片描述
    式中 x , y = 0 , 1 , … , N − 1 x,y = 0,1,…,N-1 x,y=0,1,,N1
    s s s ( x , y ) (x,y) x,y邻域内像素坐标的集合;
    M表示集合s内像素的总数。

    可见邻域平均法就是将当前像素邻域内各像素的灰度平均值作为其输出值的去噪方法

    例如,对图像采用 3 × 3 3×3 3×3 的邻域平均法,对于像素 ( m , n ) (m,n) m,n) ,其邻域像素如下:

    在这里插入图片描述

    在这里插入图片描述
    其作用相当于用这样的模板同图像卷积

    设图像中的噪声是随机不相关的加性噪声,窗口内各点噪声是独立同分布的,经过上述平滑后,信号与噪声的方差比可望提高M倍。

    这种算法简单,但它的主要缺点是在降低噪声的同时使图像产生模糊,特别在边缘和细节处。而且邻域越大,在去噪能力增强的同时模糊程度越严重。

    在这里插入图片描述

    为克服简单局部平均法的弊病,目前已提出许多保
    边缘、细节的局部平滑算法。它们的出发点都集中在如
    何选择邻域的大小、形状和方向、参加平均的点数以及
    邻域各点的权重系数等,下面简要介绍几种算法。

    1. 超限像素平滑法

    对邻域平均法稍加改进,可导出超限像素平滑法。它
    是将 f ( x , y ) f(x,y) f(x,y) 和邻域平均 g ( x , y ) g(x,y) g(x,y) 差的绝对值与选定的阈值进行比较,根据比较结果决定点 ( x , y ) (x,y) x,y的最后灰度 g ´ ( x , y ) g´(x,y) g´(x,y)
    其表达式为

    在这里插入图片描述

    这算法对抑制椒盐噪声比较有效,对保护仅有微小灰度差的细节及纹理也有效。可见随着邻域增大,去噪能力增强,但模糊程度也大。 同局部平滑法相比,超限像元平滑法去椒盐噪声效果更好

    在这里插入图片描述

    2. 灰度最相近的K个邻点平均法

    该算法的出发点是:在n×n的窗口内,属于同一集合体的像素,它们的灰度值将高度相关。因此,可用窗口内与中心像素的灰度最接近的K个邻像素的平均灰度来代替窗口中心像素的灰度值。这就是灰度最相近的K个邻点平均法

    较小的K值使噪声方差下降较小,但保持细节效果较好;而较大的K值平滑噪声较好,但会使图像边缘模糊。

    实验证明,对于3×3的窗口,取K=6为宜。

    3. 最大均匀性平滑

    为避免消除噪声引起边缘模糊,该算法先找出环绕图像中每像素的最均匀区域,然后用这区域的灰度均值代替该像素原来的灰度值

    在这里插入图片描述

    4. 有选择保边缘平滑法

    该方法对图像上任一像素 ( x , y ) (x,y) (x,y) 的5×5邻域,采用9个掩模,其中包括一个 3×3 正方形、4 个五边形和 4 个六边形。计算各个掩模的均值和方差,对方差进行排序,最小方差所对应的掩模区的灰度均值就是像素$(x,y) $的输出值。

    在这里插入图片描述

    该方法以方差作为各个区域灰度均匀性的测度。若区域含有尖锐的边缘,它的灰度方差必定很大,而不含边缘或灰度均匀的区域,它的方差就小,那么最小方差所对应的区域就是灰度最均匀区域。因此有选择保边缘平滑法既能够消除噪声,又不破坏区域边界的细节。另外,五边形和六边形在 ( x , y ) (x,y) x,y处都有锐角,这样,即使像素 ( x , y ) (x,y) x,y位于一个复杂形状区域的锐角处,也能找到均匀的区域。从而在平滑时既不会使尖锐边缘模糊,也不会破坏边缘形状。

    在这里插入图片描述

    5. 空间低通滤波法

    邻域平均法可看作一个掩模作用于图像 f ( x , y ) f(x,y) f(x,y) 的低通空间滤波,掩模就是一个滤波器,它的响应为 H ( r , s ) H(r,s) H(r,s),于是滤波输出的数字图像 g ( x , y ) g(x,y) g(x,y) 用离散卷积表示为

    在这里插入图片描述

    常用的掩模有

    在这里插入图片描述

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

    6. 中值滤波

    中值滤波是对一个滑动窗口内的诸像素灰度值排序,用中值代替窗口中心像素的原来灰度值,因此它是一种非线性的图像平滑法

    在这里插入图片描述

    它对脉冲干扰及椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘少受模糊。但它对点、线等细节较多的图像却不太合适。

    对中值滤波法来说,正确选择窗口尺寸的大小是很重要的环节。一般很难事先确定最佳的窗口尺寸,需通过从小窗口到大窗口的中值滤波试验,再从中选取最佳的

    在这里插入图片描述

    离散阶跃信号、斜升信号没有受到影响。离散三角信号的顶部则变平了。对于离散的脉冲信号,当其连续出现的次数小于窗口尺寸的一半时,将被抑制掉,否则将不受影响。

    一维中值滤波的概念很容易推广到二维。一般来说,二维中值滤波器比一维滤波器更能抑制噪声。

    二维中值滤波器的窗口形状可以有多种,如线状、方形、十字形、圆形、菱形等(见图)。

    在这里插入图片描述

    不同形状的窗口产生不同的滤波效果,使用中必须根据
    图像的内容和不同的要求加以选择。从以往的经验看,方形
    或圆形窗口适宜于外轮廓线较长的物体图像,而十字形窗口
    对有尖顶角状的图像效果好。

    在这里插入图片描述

    图(a)为原图像;图(b)为加椒盐噪声的图像;图©和图(d)分别为3×3、5×5模板进行中值滤波的结果。

    可见中值滤波法能有效削弱椒盐噪声,且比邻域、超限像素平均法更有效

    三、图像空间域锐化

    在这里插入图片描述
    在图像的识别中常需要突出边缘和轮廓信息。图像锐化就是增强图像的边缘或轮廓

    图像平滑通过积分过程使得图像边缘模糊,图像锐化则通过微分而使图像边缘突出、清晰。

    (一)梯度锐化法

    图像锐化法最常用的是梯度法。 对于图像f(x,y),在(x,
    y)处的梯度定义为

    在这里插入图片描述

    梯度是一个矢量,其大小和方向为

    在这里插入图片描述
    对于离散图像处理而言,常用到梯度的大小,因此把梯度的大小习惯称为“梯度”。并且一阶偏导数采用一阶差分近似表示,即

    在这里插入图片描述

    Sobel 与 Prewitt 算子

    为在锐化边缘的同时减少噪声的影响,Prewitt 从加大边缘增强算子的模板大小出发,由2x2扩大到3x3来计算差分,如图(a)所示。

    在这里插入图片描述

    Sobel 在 Prewitt 算子的基础上,对 4-邻域采用带权的方法计算差分,对应的模板如图(b)。

    根据梯度计算式就可以计算 Roberts、Prewitt和Sobel梯度。一旦梯度算出后,就可根据不同的需要生成不同的梯度增强图像。

    • 第一种输出形式

      g ( x , y ) = g r a d ( x , y ) g(x,y)=grad(x,y) g(x,y)=grad(x,y)

    此法的缺点是增强的图像仅显示灰度变化比较徒的边缘轮
    廓,而灰度变化比较平缓或均匀的区域则呈黑色。

    • 第二种输出形式

    在这里插入图片描述
    式中T是一个非负的阈值。适当选取T,可使明显的边缘
    轮廓得到突出,又不会破坏原来灰度变化比较平缓的背景

    • 第三种输出形式

    在这里插入图片描述

    它将明显边缘用一固定的灰度级 L G L_G LG 来表现。

    • 第四种输出形式

    在这里插入图片描述

    此方法将背景用一个固定的灰度级 L B L_B LB 来表现,便于研究边缘灰度的变化。

    • 第五种输出形式

    在这里插入图片描述
    这种方法将明显边缘和背景分别用灰度级 L G L_G LG L B L_B LB 表示,生成二值图像,便于研究边缘所在位置。

    在这里插入图片描述

    (二)Laplacian 增强算子

    Laplacian 算子是线性二阶微分算子。即

    在这里插入图片描述
    对离散的数字图像而言,二阶偏导数可用二阶差分近似,可推导出Laplacian算子

    表达式为

    ▽ 2 f ( x , y ) = f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y + 1 ) + f ( x , y − 1 ) − 4 f ( x , y ) ▽2f(x,y) = f(x+1,y) + f(x-1,y) + f(x,y+1) + f(x,y-1) - 4f(x,y) 2f(xy)=f(x+1y)+f(x1y)+f(xy+1)+f(xy1)4f(xy)

    Laplacian增强算子为:

    KaTeX parse error: Unexpected character: '' at position 51: …[ f(x+1,y)+ f(x̲1,y)+f(x,y+1)+ …

    在这里插入图片描述

    在这里插入图片描述

    其特点是:
    1、在灰度均匀的区域或斜坡中间 ▽ 2 f ( x , y ) ▽2f(x,y) 2f(xy) 为 0,增强图像上像元灰度不变;
    2、在斜坡底或低灰度侧形成“下冲”;而在斜坡顶或高灰度侧形成“上冲”。

    (三)高通滤波法

    高通滤波法就是用高通滤波算子和图像卷积来增强边
    缘。常用的算子有:

    在这里插入图片描述

    四、图像的频率域增强

    图像增强的目的主要包括:①消除噪声,改善图像的视觉效果;②突出边缘,有利于识别和处理。前面是关于图像空间域增强的知识,下面介绍频率域增强的方法。

    假定原图像为f(x,y),经傅立叶变换为F(u,v)。频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像g(x,y)。

    频率域增强的一般过程如下:

    在这里插入图片描述

    (一)频率域平滑

    图像的平滑除了在空间域中进行外,也可以在频率域中进行。由于噪声主要集中在高频部分,为去除噪声改善图像
    质量,滤波器采用低通滤波器 H ( u , v ) H(u,v) H(u,v) 来抑制高频成分,通过低频成分,然后再进行逆傅立叶变换获得滤波图像,就可达到平滑图像的目的。常用的频率域低滤波器 H ( u , v ) H(u,v) H(u,v) 有四种:

    1. 理想高通滤波器

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

    在这里插入图片描述

    在这里插入图片描述

    2. Butterworth低通滤波器

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

    在这里插入图片描述

    它的特性是连续性衰减,而不象理想滤波器那样陡峭
    变化,即明显的不连续性。因此采用该滤波器滤波在抑制
    噪声的同时,图像边缘的模糊程度大大减小,没有振铃效
    应产生。

    在这里插入图片描述

    3. 指数低通滤波器

    指数低通滤波器是图像处理中常用的另一种平滑滤波器。
    它的传递函数为:

    在这里插入图片描述

    采用该滤波器滤波在抑制噪声的同时,图像边缘的模糊程
    度较用Butterworth滤波产生的大些,无明显的振铃效应。

    在这里插入图片描述

    4. . 梯形低通滤波器

    梯形低通滤波器是理想低通滤波器和完全平滑滤波器的
    折中。它的传递函数为:

    在这里插入图片描述

    梯形低通滤波器是理想低通滤波器和完全平滑滤波器的
    折中。它的传递函数为:

    在这里插入图片描述

    (二)频率域锐化

    1. 理想高通滤波器

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

    在这里插入图片描述
    在这里插入图片描述

    2. 巴特沃斯高通滤波器

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

    在这里插入图片描述

    在这里插入图片描述

    3. 指数滤波器

    指数高通滤波器的传递函数为

    在这里插入图片描述

    4. 梯形滤波器

    梯形高通滤波器的定义为

    在这里插入图片描述

    四种滤波函数的选用类似于低通。理想高通有明显振铃现象,即图像的边缘有抖动现象;Butterworth高通滤波效果较好,但计算复杂,其优点是有少量低频通过,H(u,v)是渐变的,振铃现象不明显.

    指数高通效果比Butterworth差些,振铃现象不明显;梯形高通会产生微振铃效果,但计算简单,较常用。

    一般来说,不管在图像空间域还是频率域,采用高频
    滤波不但会使有用的信息增强,同时也使噪声增强。因此
    不能随意地使用。

    在这里插入图片描述

    五、彩色增强技术

    人眼的视觉特性 :

    • 分辨的灰度级介于十几到二十几级之间 ;
    • 彩色分辨能力可达到灰度分辨能力的百倍以上。

    彩色增强技术是利用人眼的视觉特性,将灰度图像变成彩色图像或改变彩色图像已有彩色的分布,改善图像的可分辨性

    • 彩色增强方法可分为伪彩色增强和假彩色增强两类

    (一)伪彩色增强

    伪彩色增强是把灰度图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,得到一幅彩色图像的技术。使原图像细节更易辨认,目标更容易识别。

    伪彩色增强的方法主要有密度分割法、灰度级一彩色变换和频率域伪彩色增强三种。

    1. 密度分割法

    密度分割法是把灰度图像的灰度级从0(黑)到 M 0 M_0 M0(白)分成 N N N 个区间 I i ( i = 1 , 2 , … , N ) I_i( i=1,2,…,N) Ii(i=12N) ,给每个区间Ii指定一种彩色 C i C_i Ci ,这样,便可以把一幅灰度图像变成一幅伪彩色图像。

    该方法比较简单、直观。缺点是变换出的彩色数目有限

    在这里插入图片描述

    2. 空间域灰度级一彩色变换

    根据色度学原理,将原图像 f ( x , y ) f(x,y) f(x,y) 的灰度范围分段,经过红、绿、蓝三种不同变换 T R ( • ) T_R(•) TR() T G ( • ) T_G(•) TG() T B ( • ) T_B(•) TB() ,变成三基色分量 I R ( x , y ) I_R(x,y) IR(x,y) I G ( x , y ) I_G(x,y) IG(x,y) I B ( x , y ) I_B(x,y) IB(x,y),然后用它们分别去控制彩色显示器的红、绿、蓝电子枪,便可以在彩色显示器的屏幕上合成一幅彩色图像。

    在这里插入图片描述

    3.频率域伪彩色增强

    频率域伪彩色增强方法的步骤为:
    1)把灰度图像经傅立叶变换到频率域,在频率域内用三个不同传递特性的滤波器分离成三个独立分量;

    2)然后对独立分量进行逆傅立叶变换,便得到三幅代表不同频率分量的单色图像,接着对这三幅图像作进一步的处理
    (如直方图均衡化);

    3)最后将它们作为三基色分量分别加到彩色显示器的红、绿、蓝显示通道,得到一幅彩色图像

    在这里插入图片描述

    (二)假彩色增强

    假彩色增强是对一幅自然彩色图像或同一景物的多光谱图像,通过映射函数变换成新的三基色分量,彩色合成使感兴趣目标呈现出与原图像中不同的、奇异的彩色。

    假彩色增强目的:一是使感兴趣的目标呈现奇异的彩色或置于奇特的彩色环境中,从而更引人注目;一是使景物呈现出与人眼色觉相匹配的颜色,以提高对目标的分辨力。

    多光谱图像的假彩色增强可表示为

    在这里插入图片描述
    将可见光与非可见光波段结合起来,通过假彩色处理,就能获得更丰富的信息,便于对地物识别。

    对于自然景色图像,通用的线性假彩色映射可表示为

    在这里插入图片描述

    例如采用以下的映射关系

    在这里插入图片描述

    则原图像中绿色物体会呈红色,蓝色物体会呈绿色,红
    色物体则呈兰色。

    伪彩色增强与假彩色增强有何区别

    展开全文
  • 《数字图像处理高级应用》中的代码,注意是单尺度的Retinex呦~
  • 可以用于光照不均匀图像的处理,好用!
  • 数字图像处理:实验三 图像增强

    千次阅读 2022-05-03 15:44:39
    实验三 图像增强 图像增强是数字图像处理过程中常采用的一种方法。为了改善视觉效果或便于人和机器对图像的理解和分析,根据图像的特点或存在的问题采取的改善方法或加强特征的措施称为图像增强图像增强处理是改变...

    实验三 图像增强

    图像增强是数字图像处理过程中常采用的一种方法。为了改善视觉效果或便于人和机器对图像的理解和分析,根据图像的特点或存在的问题采取的改善方法或加强特征的措施称为图像增强。图像增强处理是改变图像视觉效果的手段,增强后的图像便于对它的后续处理。图像增强即可在空域中完成,也可在频率域中完成。

    一、实验目的

    (1)了解图像增强的意义和目的;
    (2)掌握图像的灰度变换增强;
    (3)基于直方图的图像增强方法;
    (4)掌握图像平滑方法;
    (5)掌握图像锐化方法。
    (6)进一步巩固Matlab程序设计方法;
    (7)编程实现图像增强并观察增强效果

    二、实验原理

    图像增强的Matlab实现,是利用图像处理软件对给出的图像进行处理。
    1.灰度变换增强是一种点运算,可以使图像动态范围增大,扩展图像对比度,使图像变得清晰、特征明显。Matlab中可采用imadjust()函数实现图像灰度变换。
    2.基于直方图的图像增强通过修改图像的灰度直方图达到图像增强的目的,也是一种点运算。Matlab中,imhist()函数计算并产生图像的直方图,histeq()函数是实现图像直方图均衡化的函数。
    3.图像的平滑处理
    为了抑制噪声改善图像质量所做的处理称为图像平滑或去噪,既可在空间域中进行,也可在频率域中进行。用于图像平滑处理的主要技术有空域中的邻域运算和频域中的低通滤波。邻域运算采用模板完成。
    图像空间域平滑处理中最常用的是均值平滑和中值滤波。
    (1)均值平滑
    用窗口像素的平均值取代中心像素原来的灰度值。常用的邻域有4-邻域和8-邻域。
    g(i,j)=1/k ∑_(m,n∈s)〖f(m,n)〗
    借助模板卷积运算完成。去噪效果与模板尺寸有关。
    (2)中值滤波
    中值滤波是将模板中的元素由小到大进行排列,选取中间值代替模板中心对应元素作为输出值。中值滤波借助模板排序完成。中值滤波去除椒盐噪声效果好。模板大小一般为奇数,去噪效果与模板尺寸有关。
    4.图像的锐化处理
    图像锐化处理也是改善图像视觉效果的手段,同时能对图像的轮廓或边缘进行增强。用于图像锐化处理的主要技术有空域中的邻域运算和频域中的高通滤波。
    图像锐化常采用一阶微分、二阶微分实现对边缘、细节等的突出。常采用的一阶微分算子包括梯度算子、robert算子、prewitt算子、sobel算子,二阶微分算子有拉普拉斯算子。图像锐化也可在频率域中利用高通滤波器完成。

    三、实验仪器及设备

    计算机、Matlab图像处理软件、待处理图像

    四、实验内容及步骤

    1.图像增强的点运算
    (1)熟悉相关函数的用法利用格式:help函数名 掌握下列函数的使用方法

    imhist----显示图像的直方图
    ThisMATLABfunctioncalculatesthehistogramfortheintensityimageIand
    displaysaplotofthehistogram.
    
    imhist(I)
    imhist(I,n)
    imhist(X,map)
    [counts,binLocations]=imhist(I)
    [counts,binLocations]=imhist(gpuarrayI,___)
    imadjust----调整图像的灰度值或色彩图
    J=imadjust(I)
    J=imadjust(I,[LOW_IN;HIGH_IN],[LOW_OUT;HIGH_OUT])
    J=imadjust(I,[LOW_IN;HIGH_IN],[LOW_OUT;HIGH_OUT],GAMMA)
    NEWMAP=imadjust(MAP,[LOW_IN;HIGH_IN],[LOW_OUT;HIGH_OUT],GAMMA)
    
    histeq---利用直方图均衡化幅强图像的对比度
    histeqenhancesthecontrastofimagesbytransformingthevaluesinan
    intensityimage,orthevaluesinthecolormapofanindexedimage,so
    thatthehistogramoftheoutputimageapproximatelymatchesaspecified
    histogram.
    
    J=histeq(I,HGRAM)
    J=histeq(I,N)
    [J,T]=histeq(I)
    NEWMAP=histeq(X,MAP,HGRAM)
    NEWMAP=histeq(X,MAP)
    [NEWMAP,T]=histeq(X,...)
    

    (2)编程实现对图像pout.tif的增强,观察增强效果

    (a)读入图像,使用imhist()函数产生图像的直方图,分析它的直方图分布及反映图像的特点;
    在这里插入图片描述在这里插入图片描述

    特点:图像灰度高频与低频信号较少,主要集中在中间,比较窄,对比度较小,会使画面比较平、缺少层次。

    (b)读入图像,使用imadjust()函数,采用不同参数对图像进行灰度变换,并使用imhist()函数生成两个图像的直方图,分析图像对比度变化后的效果;
    在这里插入图片描述在这里插入图片描述

    特点:直方图拉伸范围越大,图像的对比度也越大,图像明暗变化比较明显。

    (c)读入图像,使用histeq()函数均衡化图像,分析变化后图像的效果。
    在这里插入图片描述在这里插入图片描述

    特点:图像对比度增加,任务变得更加分明。
    2.图像空间域平滑
    (1)熟悉相关函数的用法

    imnoise函数----给图像加入噪声
    g=imnoise(f,‘gaussian’,m,var)是将均值为m,方差为var的高斯噪声加到图像f上。m的默认值是0,var默认值是0.01。
    g=imnoise(f,‘salt&pepper’,d)给图像f添加椒盐噪声,其中d是噪声密度(即包含噪声值的图像区域的百分比)。因此,大约有d*numel(f)个像素受到污染,默认的噪声密度为0.05。
    g=imnoise(f,‘speckle’,var)用方程g=f+n*f将乘性噪声添加到图像f上,其中n是均值为0、方差为var的均匀分布的随机噪声。var的默认值为0.04。
    
    filter2函数---二维滤波
    Y=filter2(h,x,’shape’)
    h为滤波器,x为要滤波的数据,将h放在x上移动进行模板滤波。
    shape可取full,same,valid
    
    conv2函数---二维卷积运算
    Y=conv2(H,X,shape)
    与filter2类似。不一样的是在计算时要将卷积核H进行旋转180°,相关核H则不需要。
    
    imfilter函数----多维滤波
    g=imfilter(f,w,options,…)
    f:原始输入图像。w:滤波掩模(如我们平时常会用到的一些边沿检测算子、对象进行平滑的高斯算子等)g:对原始图像进行滤波后得到的输出图像。默认情况下尺寸与原始图像相同。后面的options对应的参数可选,不选的话有其默认值。options对应的共有3个参数,分别是处理滤波模型选项filtering_mode,“相关”或“卷积”;边界处理选项boundary_options;输出图像尺寸选项size_options。
    
    medfilter2函数---二维中值滤波
    B = medfilt2(A, [m n]) 
    B = medfilt2(A)
    B = medfilt2(A, ’indexed’, ...)
    其中[m n]表示邻域块的大小,默认值为[3 3]。
    
    fspecial函数----创建预定的二维滤波算子
    h = fspecial(type) 
    h = fspecial(type,para) 
    根据函数原型对fspecial函数作个说明,fspecial是用来生成滤波器(也叫算子)的函数,使用type参数来指定滤波器的种类,使用para来对具体的滤波器种类添加额外的参数信息。h就是生成的滤波器。
    type参数通常可以取gaussian、average、disk、laplacian、log、prewitt
    

    (2)对图像进行平滑,观察图像平滑效果。
    a.读入图像并加入噪声
    在这里插入图片描述在这里插入图片描述
    b.椒盐噪声在不同尺寸模板下的均值滤波效果
    在这里插入图片描述在这里插入图片描述

    c.对椒盐噪声进行均值、中值滤波
    在这里插入图片描述在这里插入图片描述

    d.编程对高斯噪声进行均值、中值滤波。
    在这里插入图片描述在这里插入图片描述

    比较均值滤波、中值滤波效果:
    均值滤波是去除高斯噪声的有效手段
    中值滤波是去除椒盐噪声的有效手段
    

    3.图像空间域锐化
    (1)利用Sobel算子锐化图像
    在这里插入图片描述在这里插入图片描述

    (2)利用fspecial函数生成各种梯度算子。
    在这里插入图片描述

    l1 =
         1     2     1
         0     0     0
        -1    -2    -1
    l2 =
         1     1     1
         0     0     0
        -1    -1    -1
    l3 =
        0.1667    0.6667    0.1667
        0.6667   -3.3333    0.6667
        0.1667    0.6667    0.1667
    l4 =
        0.0113    0.0838    0.0113
        0.0838    0.6193    0.0838
        0.0113    0.0838    0.0113
    l5 =
        0.0448    0.0468    0.0564    0.0468    0.0448
        0.0468    0.3167    0.7146    0.3167    0.0468
        0.0564    0.7146   -4.9048    0.7146    0.0564
        0.0468    0.3167    0.7146    0.3167    0.0468
        0.0448    0.0468    0.0564    0.0468    0.0448
    l6 =
        0.1111    0.1111    0.1111
        0.1111    0.1111    0.1111
        0.1111    0.1111    0.1111
    l7 =
       -0.1667   -0.6667   -0.1667
       -0.6667    4.3333   -0.6667
       -0.1667   -0.6667   -0.1667
    l8 =
      170         0         0    0.0012    0.0050    0.0063    0.0050
             0    0.0000    0.0062    0.0124    0.0127    0.0127    0.0127
             0    0.0062    0.0127    0.0127    0.0127    0.0127    0.0127
        0.0012    0.0124    0.0127    0.0127    0.0127    0.0127    0.0127
        0.0050    0.0127    0.0127    0.0127    0.0127    0.0127    0.0127
        0.0063    0.0127    0.0127    0.0127    0.0127    0.0127    0.0127
        0.0050    0.0127    0.0127    0.0127    0.0127    0.0127    0.0127
        0.0012    0.0124    0.0127    0.0127    0.0127    0.0127    0.0127
             0    0.0062    0.0127    0.0127    0.0127    0.0127    0.0127
             0    0.0000    0.0062    0.0124    0.0127    0.0127    0.0127
             0         0         0    0.0012    0.0050    0.0063    0.0050
      8110.0012         0         0         0
        0.0124    0.0062    0.0000         0
        0.0127    0.0127    0.0062         0
        0.0127    0.0127    0.0124    0.0012
        0.0127    0.0127    0.0127    0.0050
        0.0127    0.0127    0.0127    0.0063
        0.0127    0.0127    0.0127    0.0050
        0.0127    0.0127    0.0124    0.0012
        0.0127    0.0127    0.0062         0
        0.0124    0.0062    0.0000         0
        0.0012         0         0         0
    l9 =
      170.1111    0.1111    0.1111    0.1111    0.1111    0.1111    0.1111
      890.1111    0.1111
    

    (3)读入一幅图像,利用不同梯度算子对图像进行锐化,比较分析不同算子的锐化结果
    在这里插入图片描述在这里插入图片描述

    对比分析:

    laplace算子是与方向无光的各向同性边缘检测算子,若只关心边缘点的位置而不顾其周围的实际灰度差时,一般选择该算子进行检测。特点:各向同性,线性和位移是不变的,对线性和孤立点检测效果好,但边缘方向信息丢失,常产生双像素的边缘,对噪声有双倍的加强作用。
    prewitt算子为在检测边缘的同时减少噪声的影响,从加大边缘检测算子的模板大小出发,由2*2扩大到3*3来计算差分算子,采用prewitt算子能检测到边缘点,还可以抑制噪声。
    sobel算子在prewitt算子基础上能检测边缘点,且能进一步抑制噪声的影响,但检测的边缘较宽。梯度算子和laplacian算子都对噪声敏感,因此一般用它们检测边缘前要先对图像进行平滑。
    

    (4)读入一幅图像,利用Laplace算子对其进行锐化处理,并利用公式g(x,y)=f(x,y)-▽^2 f(x,y)对图像的锐化增强,对比分析。
    在这里插入图片描述在这里插入图片描述

    Laplace算子对线性和孤立点检测效果好,
    但边缘方向信息丢失,常产生双像素的边缘,对噪声有双倍的加强作用。
    Laplace公式能保留原图像作为背景值,
    又扩大了边缘对比度,锐化效果更好。
    

    4.图像频率域平滑和锐化
    (1)编程实现四种常用低通滤波,对比四种低通滤波效果;
    a、理想低通滤波器

    clc;clear;
    i=imread('lena.bmp');
    i1=rgb2gray(i);%将真彩色图像转换为灰度图像
    i1=im2double(i1);%数据格式转换为double,数值范围变成[0,1] 
    [m,n]=size(i1);%获取图像行列
    i1=imnoise(i1,'salt & pepper',0.05);
    %图像中心点
    m0=m/2;
    n0=n/2;
    i2=fft2(i1);%傅里叶变换
    i3=fftshift(i2);
    % ----------------理想低通滤波器(Ideal Lowpass)----------------
    % 定义圆的半径,也可以理解为截断频率
    r=200;
    % 沿图像中心取出(2n+1)*(2n+1)的矩形
    i_circle=i3(m0-r:m0+r,n0-r:n0+r);
    % 计算是否在半径为n的圆内,圆点为n+1,利用二象限的值,确定一、三、四象限
    n2=r^2;
    % 获取矩阵的宽度
    w=length(i_circle);
    for x=1:r+1
        x2=(x-r+1)^2;
        for y=1:r+1
            y2=(y-r+1)^2;
            if x2+y2>n2
               i_circle(x,y)=0;
               i_circle(w-x+1,y)=0;
               i_circle(w-x+1,w-y+1)=0;
               i_circle(x,w-y+1)=0;
            end
        end
    end
    i3=zeros(m,n);
    i3(m0-r:m0+r,n0-r:n0+r)=i_circle;
    i4=ifftshift(i3);
    i5=ifft2(i4);
    subplot(1,2,1)
    imshow(i1)
    xlabel('原始灰度椒盐噪声图')
    subplot(1,2,2)
    imshow(i5)
    xlabel('理想低通滤波器')
    

    b、Butterworth低通滤波器

    clc;clear;
    i=imread('lena.bmp');
    i1=rgb2gray(i);%将真彩色图像转换为灰度图像
    i1=im2double(i1);%数据格式转换为double,数值范围变成[0,1] 
    [m,n]=size(i1);%获取图像行列
    i1=imnoise(i1,'salt & pepper',0.05);
    %图像中心点
    m0=m/2;
    n0=n/2;
    i2=fft2(i1);%傅里叶变换
    i3=fftshift(i2);
    %--------------------------巴特沃斯低通滤波器-----------------------------
    %滤波器的阶数,巴特沃斯以二阶最为有效,灰度级的负数几乎为零,振铃现象很微小
    N=2;
    %截至频率距离圆点的距离
    D0=20;
    for x=1:m
        for y=1:n
            %计算点(x,y)到中心点的距离
            d=sqrt((x-m0)^2+(y-n0)^2);
            %计算巴特沃斯滤波器
            h=1/(1+(d/D0)^(2*N));
            %用滤波器乘以主函数
            i3(x,y)=i3(x,y)*h;
        end
    end
    i4=ifftshift(i3);
    i5=ifft2(i4);
    subplot(1,2,1)
    imshow(i1)
    xlabel('原始灰度椒盐噪声图')
    subplot(1,2,2)
    imshow(i5)
    xlabel('巴特沃斯低通滤波器')
    

    c、指数低通滤波器

    clc;clear;
    i=imread('lena.bmp');
    i1=rgb2gray(i);%将真彩色图像转换为灰度图像
    i1=im2double(i1);%数据格式转换为double,数值范围变成[0,1] 
    [m,n]=size(i1);%获取图像行列
    i1=imnoise(i1,'salt & pepper',0.05);
    %图像中心点
    m0=m/2;
    n0=n/2;
    i2=fft2(i1);%傅里叶变换
    i3=fftshift(i2);
    %--------------------指数低通滤波器-----------------------------
    %滤波器的阶数,指数以二阶最为有效,灰度级的负数几乎为零,振铃现象很微小
    N=2;
    %截至频率距离圆点的距离
    D0=20;
    for x=1:m
         for y=1:n
            %计算点(x,y)到中心点的距离
             d=sqrt((x-m0)^2+(y-n0)^2);
             %计算指数低通滤波器
             h=exp(-((d/D0))^N);
             %用滤波器乘以主函数
             i3(x,y)=i3(x,y)*h;         
         end
    end
    i4=ifftshift(i3);
    i5=ifft2(i4);
    subplot(1,2,1)
    imshow(i1)
    xlabel('原始灰度椒盐噪声图')
    subplot(1,2,2)
    imshow(i5)
    xlabel('指数低通滤波器')
    

    d、梯形低通滤波器

    clc;clear;
    i=imread('lena.bmp');
    i1=rgb2gray(i);%将真彩色图像转换为灰度图像
    i1=im2double(i1);%数据格式转换为double,数值范围变成[0,1] 
    [m,n]=size(i1);%获取图像行列
    i1=imnoise(i1,'salt & pepper',0.05);
    %图像中心点
    m0=m/2;
    n0=n/2;
    i2=fft2(i1);%傅里叶变换
    i3=fftshift(i2);
    %---------------------梯形低通滤波器-------------------
    %截至频率距离圆点的距离
    D0=20;D1=80;
    for x=1:m
         for y=1:n
            %计算点(x,y)到中心点的距离
             d=sqrt((x-m0)^2+(y-n0)^2);
             %计算指数低通滤波器
             if d<D0
                  h=1;
             else if d>D0 && d<D1
                     h=(d-D1)/(D0-D1);
                 else
                     h=0;
                 end
             end                      
             %用滤波器乘以主函数
             i3(x,y)=i3(x,y)*h;         
         end
    end
    i4=ifftshift(i3);
    i5=ifft2(i4);
    subplot(1,2,1)
    imshow(i1)
    xlabel('原始灰度椒盐噪声图')
    subplot(1,2,2)
    imshow(i5)
    xlabel('指数低通滤波器')
    

    四种低通滤波器滤波效果:

    低通滤波器进行平滑处理可以去噪,同时对有用高频成分也滤除。
    这种去噪的处理以牺牲清晰度为代价。 
    类别	振铃程度	图像模糊程度	噪声平滑程度
    ILPF	严重	严重	最好
    TLPF	较轻	轻	好
    ELPF	无	较轻	一般
    BLPF	无	很轻	一般
    

    (2)编程实现四种常用高通滤波,对比四种高通滤波效果;
    a、理想高通滤波器

    clc;clear;
    i=imread('lena.bmp');
    i1=rgb2gray(i);%将真彩色图像转换为灰度图像
    i1=im2double(i1);%数据格式转换为double,数值范围变成[0,1] 
    [m,n]=size(i1);%获取图像行列
    %图像中心点
    m0=m/2;
    n0=n/2;
    i2=fft2(i1);%傅里叶变换
    i3=fftshift(i2);
    %----------------理想高通滤波器(Ideal hightpass)----------------
    %定义圆的半径,也可以理解为截断频率
    r=30;
    % 沿图像中心取出(2n+1)*(2n+1)的矩形
    i_circle=i3(m0-r:m0+r,n0-r:n0+r);
    %计算是否在半径为n的圆内,圆点为n+1,利用二象限的值,确定一、三、四象限
    n2=r^2;
    %获取矩阵的宽度
    w=length(i_circle);
    for x=1:r+1
        x2=(x-r+1)^2;
        for y=1:r+1
            y2=(y-r+1)^2;
            if x2+y<n2
               i_circle(x,y)=0;
               i_circle(w-x+1,y)=0;
               i_circle(w-x+1,w-y+1)=0;
               i_circle(x,w-y+1)=0;
            end
        end
    end
    i3(m0-r:m0+r,n0-r:n0+r)=i_circle;
    i4=ifftshift(i3);
    i5=ifft2(i4);
    subplot(1,2,1)
    imshow(i1)
    xlabel('原始灰度图')
    subplot(1,2,2)
    imshow(i5)
    xlabel('理想高通滤波器')
    

    b、巴特沃斯高通滤波器

    clc;clear;
    i=imread('lena.bmp');
    i1=rgb2gray(i);%将真彩色图像转换为灰度图像
    i1=im2double(i1);%数据格式转换为double,数值范围变成[0,1] 
    [m,n]=size(i1);%获取图像行列
    %图像中心点
    m0=m/2;
    n0=n/2;
    i2=fft2(i1);%傅里叶变换
    i3=fftshift(i2);
    %--------------------------巴特沃斯高通滤波器-----------------------------
    %滤波器的阶数,巴特沃斯以二阶最为有效,灰度级的负数几乎为零,振铃现象很微小
    N=2;
    %截至频率距离圆点的距离
    D0=20;
    for x=1:m
        for y=1:n
            %计算点(x,y)到中心点的距离
            d=sqrt((x-m0)^2+(y-n0)^2);
            %计算巴特沃斯滤波器
            h=1/(1+(D0/d)^(2*N));
            %用滤波器乘以主函数
            i3(x,y)=i3(x,y)*h;
        end
    end
    i4=ifftshift(i3);
    i5=ifft2(i4);
    subplot(1,2,1)
    imshow(i1)
    xlabel('原始灰度图')
    subplot(1,2,2)
    imshow(i5)
    xlabel('巴特沃斯高通滤波器')
    

    c、指数高通滤波器

    clc;clear;
    i=imread('lena.bmp');
    i1=rgb2gray(i);%将真彩色图像转换为灰度图像
    i1=im2double(i1);%数据格式转换为double,数值范围变成[0,1] 
    [m,n]=size(i1);%获取图像行列
    %图像中心点
    m0=m/2;
    n0=n/2;
    i2=fft2(i1);%傅里叶变换
    i3=fftshift(i2);
    %--------------------指数高通滤波器-----------------------------
    %滤波器的阶数,指数以二阶最为有效,灰度级的负数几乎为零,振铃现象很微小
    N=2;
    %截至频率距离圆点的距离
    D0=20;
    for x=1:m
         for y=1:n
            %计算点(x,y)到中心点的距离
             d=sqrt((x-m0)^2+(y-n0)^2);
             %计算指数低通滤波器
             h=exp(-((D0/d))^N);
             %用滤波器乘以主函数
             i3(x,y)=i3(x,y)*h;         
         end
    end
    i4=ifftshift(i3);
    i5=ifft2(i4);
    subplot(1,2,1)
    imshow(i1)
    xlabel('原始灰度图')
    subplot(1,2,2)
    imshow(i5)
    xlabel('指数高通滤波器')
    

    d、梯形高通滤波器

    clc;clear;
    i=imread('lena.bmp');
    i1=rgb2gray(i);%将真彩色图像转换为灰度图像
    i1=im2double(i1);%数据格式转换为double,数值范围变成[0,1] 
    [m,n]=size(i1);%获取图像行列
    %图像中心点
    m0=m/2;
    n0=n/2;
    i2=fft2(i1);%傅里叶变换
    i3=fftshift(i2);
    %---------------------梯形高通滤波器-------------------
    %截至频率距离圆点的距离
    D0=20;D1=80;
    for x=1:m
         for y=1:n
            %计算点(x,y)到中心点的距离
             d=sqrt((x-m0)^2+(y-n0)^2);
             %计算指数低通滤波器
             if d<D0
                  h=0;
             else if d>D0 && d<D1
                     h=(d-D1)/(D0-D1);
                 else
                     h=1;
                 end
             end                      
             %用滤波器乘以主函数
             i3(x,y)=i3(x,y)*h;         
         end
    end
    i4=ifftshift(i3);
    i5=ifft2(i4);
    subplot(1,2,1)
    imshow(i1)
    xlabel('原始灰度图')
    subplot(1,2,2)
    imshow(i5)
    xlabel('梯形高通滤波器')
    

    对比四种高通滤波结果:

    理想高通滤波器处理后的图像边缘有抖动现象;Butterworth高通滤波器锐化效果好,边缘抖动现象不明显,但计算复杂;
    指数高通滤波器处理后的图像效果差于Butterworth,边缘抖动现象不明显;
    梯形高通滤波器会产生轻微抖动,但因计算简单经常被使用。
    

    五、实验心得体会

    1.理解了空间域和频率域中图像的增强操作。
    2.掌握了图像平滑和锐化的方法,如何给图像添加噪声和去噪的操作。
    3.会使用matlab自带的函数和自己编写的函数分别对图像进行增强。

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 170,733
精华内容 68,293
关键字:

图像增强