zoukankan      html  css  js  c++  java
  • 对比度增强(二):直方图正规划与伽马变换 cv.normal()函数使用及原理

     直方图正规化:

    图像为I,宽为W,高为H,I(r,c)代表I的第r行第c列的灰度值;输出图像记为O,为使得输出图像的灰度值在[Omin,Omax]范围里,可用如下公式:

                                                                      (1)

                    (2)

    其中0≤r<H,0≤c<W。公式(1)是一个比列关系,变换后可为公式(2),即可求输出图像O(r,c)。 

    而Imin与Omin对应,此点(Imin,Omin)在线性方程上,则斜率:

                  

               将 (Imin,Omin)带入线性方程中, b值:

              

    该方程变成:         

     最终可为: 

     正规化自己编写与使用normalize函数代码如下:

     normalize函数代码:

    import numpy as np
    import cv2 as cv

    src=np.array([[1,2,3],[4,5,6]])
    b=np.zeros((2,3))
    # c=cv.normalize(src,dst=b,alpha=4,beta=0,norm_type=cv.NORM_L1) # L1范数
    # c=cv.normalize(src,dst=b,alpha=4,beta=0,norm_type=cv.NORM_L2) # L2范数
    # c=cv.normalize(src,dst=b,alpha=4,beta=0,norm_type=cv.NORM_INF) # 无穷范数
    c=cv.normalize(src,b,20,255,norm_type=cv.NORM_MINMAX)
    print('c=',c)

    自己编写代码:
    # 原始图像
    IMAX=np.max(src)
    IMIN=np.min(src)
    OMIN,OMAX=20,255
    A=float(OMAX-OMIN)/(IMAX-IMIN)
    B=OMIN-A*IMIN
    O=A*src+B
    print('O=',O)

     其验证结果,如下:

     L1范数:图像矩阵中值的绝对值的和(L1)

     L2范数:图像矩阵中值的平方和的开发(L2)

    无穷范数:图像矩阵中值的绝对值的最大值(L3)

    求得值简称:L

    所有公式可表示:

                   

    对应代码:dst=cv.normalize(src,dst,alpha=1,beta=0,norm_type=cv.NORM_L1)

     伽马变换:

                 0≤r<H,0≤c<W

    当 =1时,图像不变。如果图像整体或者感兴趣区域较暗,则令0<<1可以增加图像对比度;相反,如果图像整体或者感兴趣区域较亮,则>1可以降低图像对比度。

  • 相关阅读:
    IDENT_CURRENT ,@@identity,SCOPE_IDENTITY() 之间对比
    移动无边框窗体
    Winform拖拽改变无边框窗体大小
    配置错误---分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
    c# winform中预防窗体重复打开
    C# TreeView 控件的综合使用方法
    c# vs2010 连接access数据库
    解决python pip缓慢
    securecrt密码获取
    linux开启telnet
  • 原文地址:https://www.cnblogs.com/tangjunjun/p/11690306.html
Copyright © 2011-2022 走看看