OpenCV实现多标准细节提升算法

打印 上一主题 下一主题

主题 1034|帖子 1034|积分 3102

1、算法原理

多标准细节提升算法泉源于论文*《DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOOSTING》*,算法主要是办理细节增强算法中噪声和细节的均衡问题。

常规的非锐化掩蔽(USM)算法在提升细节的同时,会将噪声分量放大。多标准细节提升算法,利用噪声分量在差异高斯标准滤波的情况下,响应值基本一致,但是,真正的边缘细节分量,会随着高斯滤波的标准加大,响应值将会变化。因此,作者奇妙地利用这个特征,利用差异标准的高斯滤波效果相减,从而分离出噪声、细节。
算法步调
设输入原始图像为                                             I                            ∗                                       I^*                  I∗,差异标准的高斯滤波器为                                             G                            1                                  ,                                   G                            2                                  ,                                   G                            3                                       G_{1},G_{2},G_{3}                  G1​,G2​,G3​,标准系数设置为:1.0、2.0、4.0。
(1)、利用差异的标准的高斯滤波器,对图像进行滤波。
                                                    B                               1                                      =                                       G                               1                                      ∗                                       I                               ∗                                      ,                                                B                               2                                      =                                       G                               2                                      ∗                                       I                               ∗                                      ,                                                B                               3                                      =                                       G                               3                                      ∗                                       I                               ∗                                            B_{1}=G_{1}*I^{*},\quad B_{2}=G_{2}*I^{*},\quad B_{3}=G_{3}*I^{*}                     B1​=G1​∗I∗,B2​=G2​∗I∗,B3​=G3​∗I∗
(2)、对差异标准的高斯滤波效果做差,分离出差异分量的细节。
                                                    D                               1                                      =                                       I                               ∗                                      −                                       B                               1                                      ,                                       D                               2                                      =                                       B                               1                                      −                                       B                               2                                      ,                                       D                               3                                      =                                       B                               2                                      −                                       B                               3                                            D_{1}=I^{*}-B_{1},D_{2}=B_{1}-B_{2},D_{3}=B_{2}-B_{3}                     D1​=I∗−B1​,D2​=B1​−B2​,D3​=B2​−B3​
(3)、差异分量的细节加权融合。
                                                    D                               ∗                                      =                            (                            1                            −                                       w                               1                                      ×                                       s                               g                               n                                      (                                       D                               1                                      )                            )                            ×                                       D                               1                                      +                                       w                               2                                      ×                                       D                               2                                      +                                       w                               3                                      ×                                       D                               3                                            D^*=(1-w_1\times\mathrm{sgn}(D_1))\times D_1+w_2\times D_2+w_3\times D_3                     D∗=(1−w1​×sgn(D1​))×D1​+w2​×D2​+w3​×D3​
2、利用python-opencv进行实现

  1. import cv2 as cv
  2. import numpy as np
  3. def MSDD(input):
  4.     #不同尺度的高斯滤波
  5.     finput = np.float32(input)
  6.     B1 = cv.GaussianBlur(finput, (5, 5), 1.0)
  7.     B2 = cv.GaussianBlur(finput, (5, 5), 2.0)
  8.     B3 = cv.GaussianBlur(finput, (5, 5), 4.0)
  9.     #细节分离
  10.     D1 = finput - B1
  11.     D2 = B1 - B2
  12.     D3 = B2 - B3
  13.     #加权融合
  14.     w1 = 0.5
  15.     w2 = 0.5
  16.     w3 = 0.25
  17.     dest = np.clip((1 - w1 * np.sign(D1)) * D1 + w2 * D2 + w3 * D3 + finput, 0, 255)
  18.     return np.uint8(dest)
  19. if __name__ == '__main__':
  20.     image = cv.imread('31.png', cv.IMREAD_GRAYSCALE)
  21.     msdd_result = MSDD(image)
  22.     display = np.concatenate([image, msdd_result], axis=1)
  23.     cv.imshow('msdd', display)
  24.     cv.waitKey()
复制代码

3、小结

(1)、多标准细节提升算法原理清晰,实现简洁。
(2)、参数调试难度不大。
(3)、搞FPGA图像处理的同砚,可以尝试移植下。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表