多尺度的图像细节提升

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lz0499/article/details/82082481

                                         多尺度的图像细节提升

论文的全名是DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOOSTING,论文核心的字段如下:

   

论文的核心思想类似于Retinex,使用了三个尺度的高斯模糊,再和原图做减法,获得不同程度的细节信息,然后通过一定的组合方式把这些细节信息融合到原图中,从而得到加强原图信息的能力:请参考这一篇博客介绍:SSE图像算法优化系列十二:多尺度的图像细节提升。该博客给出了SSE的实现过程 

实现代码:

def multiScaleSharpen(img ,radius):
    h,w,chan = img.shape

    GaussBlue1 = zeros(img.shape,dtype = uint8)
    GaussBlue2 = zeros(img.shape, dtype=uint8)
    GaussBlue3 = zeros(img.shape, dtype=uint8)
    Dest_float_img = zeros(img.shape, dtype=float32)
    Dest_img = zeros(img.shape, dtype=uint8)

    w1 = 0.5
    w2 = 0.5
    w3 = 0.25

    GaussBlue1 = cv2.GaussianBlur(img,(radius,radius),1)
    GaussBlue2 = cv2.GaussianBlur(img,(radius*2-1,radius*2-1),2)
    GaussBlue3 = cv2.GaussianBlur(img,(radius*4-1,radius*4-1),4)

    for i in range(0,h):
        for j in range(0,w):
            for k in range(0,chan):
                Src = img.item(i,j,k)
                D1 = Src-GaussBlue1.item(i,j,k)
                D2 = GaussBlue1.item(i,j,k) - GaussBlue2.item(i,j,k)
                D3 = GaussBlue2.item(i,j,k) - GaussBlue3.item(i,j,k)
                if(D1 > 0):
                    sig = 1
                else:
                    sig = -1
                Dest_float_img.itemset((i,j,k),(1-w1*sig)*D1+w2*D2+w3*D3+Src)

    Dest_img = cv2.convertScaleAbs(Dest_float_img)
    return Dest_img


if __name__ == '__main__':
    img = cv2.imread("LenaRGB.bmp")

    multiScaleSharpen_out = zeros(img.shape, dtype=uint8)
    multiScaleSharpen_out = multiScaleSharpen(img,5)


    cv2.namedWindow("original image", cv2.WINDOW_NORMAL)
    cv2.namedWindow("multiScaleSharpen image", cv2.WINDOW_NORMAL)
    cv2.namedWindow("Compare image", cv2.WINDOW_NORMAL)



    cv2.imshow("original image", img)
    cv2.imshow("multiScaleSharpen image", multiScaleSharpen_out)
    cv2.imshow("Compare image",hstack((img,multiScaleSharpen_out)))
    cv2.imwrite("multiScaleSharpen_LenaRGB.bmp", multiScaleSharpen_out)
    cv2.waitKey(0)  # 等待键盘触发事件,释放窗口

实现效果图:

参考资料:

图像增强:多尺度的图像细节提升(multi-scale detail boosting)实现方法

SSE图像算法优化系列十二:多尺度的图像细节提升。

猜你喜欢

转载自blog.csdn.net/lz0499/article/details/82082481