精华内容
下载资源
问答
  • 图像增强原理
    千次阅读
    2020-03-10 17:01:27

    简介

    增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合。
    有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。(摘自百度百科)

    Halcon算子与算法原理

    1.灰度线性变换

    a、scale_image

       g’ := g * Mult + Add 
      g为当前的灰度值,Mult 为所乘的系数,Add为加的偏移值,
      由公式可以看出用scale_image来处理图像是(倍数+偏移)的变化
    

    b、scale_image_max

    计算像素的最大和最小值,按照最大值比例化各个像素,将灰度值拉伸到0-255
    

    c、invert_image

    g’ = 255-g
    反转图像像素值
    

    2.灰度非线性变换

    a、log_image

       对图片进行对数变换
       g' = ln(g+1)
       用于提高暗部像素值
    

    b、exp_image

    对图片进行指数变换
    g'=g的e次幂
    用于提高亮部像素值
    

    3.图像增强对比度与照明度

    a、emphasize

    增强图像对比度
    增强图像的高频区域(边缘和拐角),使图像看起来更清晰。
    

    b、illuminate

    增强图像照明度
    增强图像的高频区域(边缘和拐角),使图像看起来更清晰。
    

    4.直方图均衡化

    a、equ_histo_image

    通过灰度直方图的线性化,增强图像的对比度
    原理参考博文:https://blog.csdn.net/yy197696/article/details/102993968
    

    5.灰度图像形态学

    a、 gray_opening

    结构元素在图像中滑,灰度值最高的值作为新值,有使图像变亮的作用。 
    

    b、gray_closing

    结构元素在图像中滑,灰度值最低的值作为新值,有使图像变暗的作用。 
    

    c、 gray_range_rect

    用一个矩形结构元素在图像中滑动,新值 = (矩形中最大的)灰度值-(矩形中最大的)最小的灰度值
    

    5.图片间操作

    a、 add_image

    两图片灰度值相加 
    

    b、add_image

    两图片灰度值相减  
    

    6、图像平滑

    a、coherence_enhancing_diff

    执行图像的相干性增强扩散
    对输入图像Image进行各向扩散处理,以增加Image中包含的图像结构的相关性。
    特别是,不连续的图像边缘通过扩散连接,而没有垂直于其主导方向进行平滑。
    能使图像的边界变模糊
    

    b、mean_curvature_flow

    对图像使用灰度直方图曲率平滑使图像变得平滑。
    能使图像干扰降低
    

    持续更新,如有错误烦请指正,欢乐学习,共同进步

    更多相关内容
  • 红外热像仪产生的彩色红外图像经常遇到对比度低、噪声、边缘模糊等问题。 针对这些问题,我们提出了一种新的基于重力和侧向抑制网络的图像增强算法
  • 基于Matlab的拉普拉斯图像增强算法与设计.pdf
  • 直方图均衡化的作用是图像增强。 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。 第一个问题。均衡化过程中,必须要保证两个条件:①像素无论怎么...

    直方图均衡化的作用是图像增强。

    有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。

    第一个问题。均衡化过程中,必须要保证两个条件:①像素无论怎么映射,一定要保证原来的大小关系不变,较亮的区域,依旧是较亮的,较暗依旧暗,只是对比度增大,绝对不能明暗颠倒;②如果是八位图像,那么像素映射函数的值域应在0和255之间的,不能越界。综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。

    第二个问题。累积分布函数具有一些好的性质,那么如何运用累积分布函数使得直方图均衡化?比较概率分布函数和累积分布函数,前者的二维图像是参差不齐的,后者是单调递增的。直方图均衡化过程中,映射方法是

    其中,n是图像中像素的总和,是当前灰度级的像素个数,L是图像中可能的灰度级总数。

    来看看通过上述公式怎样实现的拉伸。假设有如下图像:


    得图像的统计信息如下图所示,并根据统计信息完成灰度值映射:


    注:50的累积概率为自己的;128的累积概率为0.25+0.1875;200的累积概率为0.4375+0.3125;

    映射后的图像如下所示:

    以上就是直方图映射均衡化的步骤,当然还有一些基于此的更优算法,比如Photoshop中的方法,在此就不一一列举了,大同小异。

    展开全文
  • 图像增强算法

    千次阅读 2021-10-08 16:27:11
    一、图像增强算法原理 图像增强算法常见于对图像的亮度、对比度、饱和度、色调等进行调节,增加其清晰度,减少噪点等。 图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则...

    图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)

    一、图像增强算法原理

    图像增强算法常见于对图像的亮度、对比度、饱和度、色调等进行调节,增加其清晰度,减少噪点等。
    图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则为高通滤波器,当然增强一副图像是为最后获取图像有用信息服务为主。一般的算法流程可为:图像去燥、增加清晰度(对比度)、灰度化或者获取图像边缘特征或者对图像进行卷积、二值化等,上述四个步骤往往可以通过不同的步骤进行实现,后续将针对此方面内容进行专题实验,列举其应用场景和处理特点。
    1.1 基于直方图均衡化的图像增强
    图像对比度增强的方法可以分为两种:直接对比度增强方法,间接对比度增强方法。直方图拉伸和直方图均衡化是常见的间接对比度增强方法。直方图拉伸是利用对比度拉伸对直方图进行调整,扩大前景和背景灰度的差别,这种方法可以通过线性和非线性的方法来实现,其中ps中就是利用此方法提高对比度;直方图均衡化则是利用累积函数对灰度值进行调整,实现对比度的增强。

    直方图均衡化处理原理: 将原始图像的灰度图从比较集中的某个灰度区间均匀分布在整个灰度空间中,实现对图像的非线性拉伸,重新分配图像像素值。

    算法应用场景:

    1、算法的本质是重新分布图像的像素值,增加了许多局部的对比度,整体的对比度没有进行太大改变,所以应用图像为图像有用数据的对比度相近是,例如:X光图像,可以将曝光过度或曝光不足照片进行更好的显示,或者是背景及前景太亮或太暗的图像非常有用。
    2、算法当然也有缺点,具体表现为:变换后的图像灰度级减少,某些细节减少;某些图像有高峰值,则处理后对比度不自然的过分增强。

    算法实现特点:
    1、均衡化过程:直方图均衡化保证在图像像素映射过程中原来的大小关系保持不变,即较亮的区域依旧较亮,较暗的依旧较暗,只是对比度增加,不能明暗颠倒;保证像素映射函数的值域在0和255之间。累积分布函数是单增长函数,并且值域是0到1。
    2、累积分布函数实现过程:
    比较概率分布函数和累积分布函数,前者的二维图像是参差不齐的,后者是单调递增的。直方图均衡化过程中,映射方法是
    在这里插入图片描述
    其中,n是图像中像素的总和,是当前灰度级的像素个数,L是图像中可能的灰度级总数。
    来看看通过上述公式怎样实现的拉伸。假设有如下图像:
    在这里插入图片描述
    得图像的统计信息如下图所示,并根据统计信息完成灰度值映射:
    在这里插入图片描述
    映射后的图像如下所示:
    在这里插入图片描述

    算法伪代码:

        1、计算原始灰度图像的像素概率分布
    
        2、根据像素概率分布获取图像累积分布函数
    
        3、根据映射函数获取变换后的图像
    

    1.2 基于拉普拉斯算子的图像增强
    利用拉普拉斯算子进行图像增强本质是利用图像的二次微分对图像进行蜕化,在图像领域中微分是锐化,积分是模糊,利用二次微分对图像进行蜕化即利用邻域像素提高对比度。在opencv中也有拉普拉斯函数,但那时生成了灰度图像,更多的求取边缘。
    1.3 基于对象Log变换的图像增强
    对数变换可以将图像的低灰度值部分扩展,显示出低灰度部分更多的细节,将其高灰度值部分压缩,减少高灰度值部分的细节,从而达到强调图像低灰度部分的目的。变换方法:

    对数变换对图像低灰度部分细节增强的功能过可以从对数图上直观理解:
    x轴的0.4大约对应了y轴的0.8,即原图上0-0.4的低灰度部分经过对数运算后扩展到0-0.8的部分,而整个0.4-1的高灰度部分被投影到只有0.8-1的区间,这样就达到了扩展和增强低灰度部分,压缩高灰度部分的值的功能。

    对于不同的底数,底数越大,对低灰度部分的扩展就越强,对高灰度部分的压缩也就越强。

    1.4 基于伽马变换的图像增强
    伽马变换主要用于图像的校正,将灰度过高或者灰度过低的图片进行修正,增强对比度。变换公式就是对原图像上每一个像素值做乘积运算:

    伽马变换对图像的修正作用其实就是通过增强低灰度或高灰度的细节实现的,从伽马曲线可以直观理解:

    γ值以1为分界,值越小,对图像低灰度部分的扩展作用就越强,值越大,对图像高灰度部分的扩展作用就越强,通过不同的γ值,就可以达到增强低灰度或高灰度部分细节的作用。

    伽马变换对于图像对比度偏低,并且整体亮度值偏高(对于于相机过曝)情况下的图像增强效果明显。

    二、测试代码
    根据上述讲解,本文利用python进行编程实验,代码如下:

    def preprocess(filename, i):
        image = cv2.imread(filename)
        image_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)
    

    直方图均衡增强

    image_equal = cv2.equalizeHist(image_gray)
    r,g,b = cv2.split(image)
    r1 = cv2.equalizeHist(r)
    g1 = cv2.equalizeHist(g)
    b1 = cv2.equalizeHist(b)
    image_equal_clo = cv2.merge([r1, g1, b1])
    

    拉普拉斯算法增强

    kernel = np.array([ [0, -1, 0],  
                        [-1,  5, -1],  
                        [0, -1, 0] ]) 
    image_lap = cv2.filter2D(image,cv2.CV_8UC3 , kernel)
    

    对象算法增强

    image_log = np.uint8(np.log(np.array(image) +1))    
    cv2.normalize(image_log, image_log,0,255,cv2.NORM_MINMAX)
    

    转换成8bit图像显示

    cv2.convertScaleAbs(image_log,image_log)
    

    伽马变换

    gamma = 2
    image_gamma = np.uint8(np.power((np.array(image)/255.0),fgamma)*255.0)
    cv2.normalize(image_gamma, image_gamma, 0, 255, cv2.NORM_MINMAX)
    cv2.convertScaleAbs(image_gamma, image_gamma)
    

    结果分析为:
    1、log函数变化对图像增强来讲,更多是对图像的对比度有所减弱,毕竟函数表现形式为像素值小的变大点,像素值大的变小点,所以对比度减小,亮度增加,正如图像所显示。所以目前看来log函数还是慎用,如果提高函数可以利用分段函数啊。
    2、gamma函数图像增强,这个函数原理可以看出,当r大于1时,可以当做指数函数,小于则为log函数。在试验中我们常用r>1,实现图像对比度增强。从图像中可以看出,黑色更黑,白色更白。
    3、laplus函数图像增强,本质是微分,所以为图像锐化,在图像锐化是明显凸显图像的细节,进而直观上提高图像对比度。
    4、equal函数本质是重新分布图像的像素值,直观我们发现图像颜色发生变化,但对比度是有所提高,当然对于这组的图像的作用,没有体现。

    总结:图像增强方法不同,应用领域不同,更好的应用需要掌握灵活多变的方法。

    来源:https://www.cnblogs.com/polly333/p/7280764.html

    展开全文
  • 用于图像增强的拉普拉斯算子的程序,有助于学习图像增强
  • 本文提出了一种基于双目立体视觉的图像增强算法。该算法首先通过立体匹配处理求解场景视差图像,然后构建广义双边滤波估计图像照度分量,根据Retinex原理求解图像反射分量,实现图像的增强。实验证明,该算法能够...
  • 图像增强

    万次阅读 多人点赞 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、彩色增强

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

     

        

    展开全文
  • 基于 Retinex-UNet 算法的低照度图像增强
  •  图像增强是指按特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的 信息,它是一种将原来不清晰的图像变得清晰或强调某些感兴趣的特征,抑制不感兴趣的特 征,使之改善图像质量、丰富信息量,加强...
  • 这是图像增强代码的整理,也是基础常见的图像增强代码,共六种:Retinex图像增强(3种)、灰度拉伸、直方图均衡化、自适应直方图均衡化等,代码均可正常运行,省去了你去到处搜索的时间,更专注于自己的实验。
  • 图像频域增强:傅里叶变换

    千次阅读 2022-02-20 11:17:22
    图像的傅里叶变换,慢速numpy实现,加速numpy实现。
  • 图像增强是指按照某种特定的需求,突出图像中有用的信息,去除或者削弱无用的信息。图像增强的目的是使处理后的图像更适合人眼的视觉特性或者易于机器识别。在医学成像、遥感成像、人物摄影等领域,图像增强技术都...
  • 拉普拉斯算子原理 图像增强

    千次阅读 2019-06-02 22:49:54
    同梯度算子一样,拉普拉斯算子也会增强图像中的噪声,有时用拉普拉斯算子进行边缘检测时,可将图像先进行平滑处理。 图像锐化处理的作用是使灰度反差增强,从而使模糊图像变得更加清晰。图像模糊的实质就是图像受到...
  • 关于Hessian矩阵的图像增强

    千次阅读 2020-02-22 22:03:03
    3. 基于Hessian矩阵的图像增强 本文是关于图像增强方面的知识。 关于Retinex图像增强, 【请点击】 关于Hessian矩阵请理论查看, 【请点击】 1. 数字图像处理之尺度空间理论 尺度空间理论的基本思想是:在...
  • 图像增强—彩色增强技术

    万次阅读 2019-08-10 14:28:53
    将灰度图像转换为彩色图像,或改变已有彩色的分布,会改善图像的可视性,是从可视角度实现图像增强的有效方法之一。彩色增强技术目前彩色增强技术分为两大类:伪彩色处理(pseudo color):把灰度图像处理成伪彩色图像...
  • 深度学习中的图像增强

    千次阅读 2021-08-20 00:54:01
    引言图像增强是我们在深度学习领域中绕不开的一个话题,本文我们将讨论什么是图像增强,并在三个不同的 python 库中实现它,即 Keras、Pytorch 和 augmentation(专...
  • 本文对于两种典型彩色图像增强算法即白平衡算法和伪彩色法图像增强处理技术进行了研究和实验仿真,且对仿真结果进行了研究与分析,结果表明白平衡法图像增强处理方法对于纠正彩色图像的偏色现象效果很好;伪彩色图像...
  • 1.Retinex图像增强是一种高动态范围图像的新色调映射技术。而基础理论是,物体的颜色是由物体对长波(红色)、中波(绿色)、短波(蓝色)光线的反射能力来决定的,而不是由反射光强度的绝对值来决定的,物体的色彩...
  • 图像增强是一种基本的图像处理技术,主要是为了改善图像的质量以及增强感兴趣部分,改善图像的视觉效果或使图像变得更利于计算机处理。对数变换函数对图像的低灰度区作较大拉伸、高灰度区作压缩,这种变换能使图像的...
  • 基于小波变换实现图像增强

    千次阅读 2021-10-01 15:26:52
    1,基于小波变换的图像低通滤波 %小波变换进行滤波变换 clc,clear,close all; Image = rgb2gray(imread('baboon.jpg')); nIg = imnoise(Image,'gaussian'); [C,S] = wavedec2(nIg,3,'db4');%采用db4小波对噪声图像...
  • 1.了解图像增强的基本原理和算法;2.直方图均衡化、规定化;3.灰度图像的空域增强;4.灰度图像的频域增强;
  • 基于Matlab的图像增强(三)

    千次阅读 2020-12-01 22:03:06
    2.图像的频率域处理 2.1图像的频率域平滑 2.1.1理想低通滤波器(ILPF) 2.1.2Butterworth低通滤波器 ...3.彩色图像增强 4.1伪彩色增强 4.2彩色增强 4.图像变换 4.1傅里叶变换 (1)一维傅里叶变换 (2)二维傅里叶变换
  •  这里,n[i]表示的是灰度级为i的像素的个数,L表示的是最大灰度级,width和height分别表示的是原始图像的宽度和高度,所以,p[i]表示的就是灰度级为i的像素在整幅图像中出现的概率(其实就是p[]这个数组存储的就是这...
  • 为了增强彩色图像而不引起色彩失真,在HSV颜色空间中保持色相不变,提出了采用分段对数变换增强饱和度结合在多尺度Retinex算法的基础上,采用边缘保持增强色调的低照度彩色图像增强算法。实验结果表明,该方法在保持图像...
  • 接下来提出一种采用设计的FPGA卡实现带修改参数的灰度变换图像增强算法,给出算法的详细表达式及其实现的定点化子程序,并且给出了图像算法在FPGA中采用VHDL语言的具体实现。,对算法的有效性进行了测试,比较了采用...
  • 图像增强(空间域)

    万次阅读 多人点赞 2018-06-17 20:32:53
    (一)图像增强的目的 图像增强是采用一系列技术去改善图像的视觉效果,或将图像转换成一种更适合于人或机器进行分析和处理的形式。例如采用一系列技术有选择地突出某些感兴趣的信息,同时抑制一些不需要的信息,...
  • 图像处理 真彩色增强

    千次阅读 多人点赞 2019-04-30 10:42:49
    一、真彩色增强原理图像的自动分析中,彩色是一种能简化目标提取和分类的重要参量。在彩色图像处理中,选择合适的彩色模型是很重要的。电视摄像机和彩色扫描仪都是根据RGB模型工作的。为在屏幕上显示彩色图一定要...
  • 提出了基于脊小波(ridgelet)变换域的模糊自适应图像增强算法,利用脊小波变换在表示图像线性奇异边缘时具有独特的优越性,达到突出边缘和抑制噪声的目的。利用频域内傅里叶投影变换定理,提出优化有限拉东(Radon)变换...
  • 低照度图像增强算法的研究与实现_彭波,研究了增强算法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,884
精华内容 19,553
关键字:

图像增强原理