论文核心思想是:使用三个尺度的高斯模糊,和原图做减法,获得不同程度的细节信息,然后通过一定的组合方式把这些细节信息融合到原图中,从而得到加强原图信息的能力。
以下给出python版本实现:
import cv2
import glob
import os
import numpy as np
def multiScaleSharpen(src, Radius):
sigma1 = 1.0
sigma2 = 2.0
sigma3 = 4.0
B1 = cv2.GaussianBlur(src, (Radius,Radius), sigma1)
B2 = cv2.GaussianBlur(src, (Radius*2-1,Radius*2-1), sigma2)
B3 = cv2.GaussianBlur(src, (Radius*4-1,Radius*4-1), sigma3)
src = src.astype(np.float) # uint8 to float, avoid Saturation
B1 = B1.astype(np.float)
B2 = B2.astype(np.float)
B3 = B3.astype(np.float)
D1 = src - B1 # get detail
D2 = B1 - B2
D3 = B2 - B3
w1 = 0.5
w2 = 0.5
w3 = 0.25
result = (1 - w1* np.sign(D1))*D1 + w2 * D2 + w3 * D3 + src
result_img = cv2.convertScaleAbs(result)
return result_img
if __name__ == "__main__":
img = cv2.imread("")
result = multiScaleSharpen(img, 5)
cv2.imwrite("",result)
更多细节可以参考大佬的文章:
【1】https://www.cnblogs.com/Imageshop/p/7895008.html
【2】https://blog.csdn.net/guyuealian/article/details/79065745