双尺度与多尺度图像细节提升 python matlab

双尺度图像分解细节提升

一副图像经过大尺度的均值滤波(公式10)后得到大尺度的基础层Bn,然后用原图减去大尺度基础层(公式11)可以得到一副小尺度的细节层Dn,然后加上原图In,图像细节得到提升,实验结果如下。

2、多尺度图像分解细节提升 看到多尺度图像分解细节提升算法是在2015年《DARKIMAGEENHANCEMENTBASEDONPAIRWISETARGETCONTRASTAND MULTI-SCALEDETAILBOOSTING》上的一小部分,感觉算法思想也是特别妙,下面是主要内容。

简单介绍下论文的思想是通过三个不同尺度的高斯模糊,然后和原图做减法获取不同的细节信息,再通过一定的组合方式将细节信息融合到原图当中,从而加强原图的细节信息。

总结 对于增强图像细节方面方法有待研究的方法还有很多,上述的两种基本的方法,如果不仔细去看,效果也不是很明显,所以有待改进。

参考:图像增强:多尺度的图像细节提升(multi-scale detail boosting)实现方法_pan_jinquan的博客-CSDN博客_细节增强算法

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

Matlab版

clc
clear
%双尺度细节提升
I=im2double(imread('13.png'));
f=fspecial('average',31);
B=imfilter(I,f,'conv','replicate');
D=I-B;
I1=D+I;
imwrite(I1,'1.png');
figure;imshow([I I1]);
%多尺度细节提升
sigma1=1;
sigma2=2;
sigma3=4;
f1=fspecial('gaussian',10,sigma1);
f2=fspecial('gaussian',50,sigma2);
f3=fspecial('gaussian',100,sigma3);
B1=imfilter(I,f1,'conv','replicate');
B2=imfilter(I,f2,'conv','replicate');
B3=imfilter(I,f3,'conv','replicate');
D1=I-B1;
D2=B1-B2;
D3=B2-B3;
W1=0.5;W2=0.5;W3=0.25;
I2=(1-W1.*sign(D1)).*D1+W2*D2+W3*D3+I;
figure;imshow([I I2]);
imwrite(I2,'2.png');

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("/Users/mac/Desktop/Test/6.jpeg")
    img = cv2.resize(img,None,fx=0.4,fy=0.4,interpolation=cv2.INTER_CUBIC)
    result = multiScaleSharpen(img, 5)
    cv2.imshow("0",img)
    cv2.imshow("1",result)
    cv2.waitKey()
    cv2.destroyWindow()
    # cv2.imwrite("/Users/mac/Desktop/Test/12-1.jpeg",result)

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值