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进行实现
- import cv2 as cv
- import numpy as np
- def MSDD(input):
- #不同尺度的高斯滤波
- finput = np.float32(input)
- B1 = cv.GaussianBlur(finput, (5, 5), 1.0)
- B2 = cv.GaussianBlur(finput, (5, 5), 2.0)
- B3 = cv.GaussianBlur(finput, (5, 5), 4.0)
- #细节分离
- D1 = finput - B1
- D2 = B1 - B2
- D3 = B2 - B3
- #加权融合
- w1 = 0.5
- w2 = 0.5
- w3 = 0.25
- dest = np.clip((1 - w1 * np.sign(D1)) * D1 + w2 * D2 + w3 * D3 + finput, 0, 255)
- return np.uint8(dest)
- if __name__ == '__main__':
- image = cv.imread('31.png', cv.IMREAD_GRAYSCALE)
- msdd_result = MSDD(image)
- display = np.concatenate([image, msdd_result], axis=1)
- cv.imshow('msdd', display)
- cv.waitKey()
复制代码
3、小结
(1)、多标准细节提升算法原理清晰,实现简洁。
(2)、参数调试难度不大。
(3)、搞FPGA图像处理的同砚,可以尝试移植下。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |