多尺度细节提升算法

2023-05-16

多尺度图像细节提升算法python实现
分为了多个尺度的细节层,然后与原图相加增强细节信息。

论文:DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOOSTING

https://www.cnblogs.com/Imageshop/p/7895008.html

多尺度细节提升算法


import cv2
import numpy as np
from matplotlib import pyplot as plt

from d import float2int8
def show_rgb(im,r,g,b):
    fig = plt.figure()
    ax1 = fig.add_subplot(221)
    ax1.imshow(im)

    ax2 = fig.add_subplot(222)
    ax2.imshow(r, )
    ax3 = fig.add_subplot(223)
    ax3.imshow(g, )
    ax4 = fig.add_subplot(224)
    ax4.imshow(b, )
    plt.show()

if __name__ == "__main__":
    file = r'D:\dataset\wang\ccm\2022-06-21-15-10-53_raw_wb.png'
    file = r'D:\dataset\noise_img\pp.jpg'

    file = r'D:\dataset\ebi_test\1\IMG_0005.jpg'
    file = r'D:\dataset\noise_img\015.jpg'
    file = r'D:\dataset\dang_yingxiangzhiliangceshi\img\IMG_0008.jpg'

    file = r'D:\code\data\kodak\kodim21.png'
    image = cv2.imread(file)  # 根据路径读取一张图片
    h, w, c = image.shape
    # h = 600
    # w = 600
    # image = cv2.resize(image, [h, w])

    radiu = 5
    B1 = cv2.GaussianBlur(image, (radiu, radiu), 1.0, 1.0)
    B2 = cv2.GaussianBlur(image, (2*radiu-1, 2*radiu-1), 2.0, 2.0)
    B3 = cv2.GaussianBlur(image, (4*radiu-1, 4*radiu-1), 4.0, 4.0)

    B1 = cv2.blur(image, (radiu, radiu))
    B2 = cv2.blur(image, (2 * radiu - 1, 2 * radiu - 1))
    B3 = cv2.blur(image, (4 * radiu - 1, 4 * radiu - 1))
    D1 = image - B1.astype(np.int32)
    D2 = B1 - B2.astype(np.int32)
    D3 = B2 - B3.astype(np.int32)

    factor = 1
    w1 = 0.5 * factor
    w2 = 0.5 * factor
    w3 = 0.25 * factor

    show_rgb(image[..., ::-1], B1[..., ::-1], B2[..., ::-1], B3[..., ::-1])


    print(B1.dtype, D1.dtype)
    D = D1*(D1 > 0) * (1-w1) + D1*(D1 <= 0) * (1+w1) + w2*D2 + w3*D3

    im_res = image + D
    im_res = np.clip(im_res, 0, 255)
    im_res = im_res.astype(np.uint8)
    show_rgb(im_res[..., ::-1], np.abs(D1[..., ::-1]) + 20, np.abs(D2[..., ::-1]) + 20, np.abs(D3[..., ::-1]) + 20)

    DD = D1 * w1 + w2 * D2 + w3 * D3
    im_res2 = image + DD
    im_res2 = np.clip(im_res2, 0, 255).astype(np.uint8)
    im_res3 = B1 + DD
    im_res3 = np.clip(im_res3, 0, 255).astype(np.uint8)
    show_rgb(image[..., ::-1], im_res[..., ::-1], im_res2[..., ::-1], im_res3[..., ::-1])
    cv2.imwrite('multi_kodim11.jpg', im_res)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多尺度细节提升算法 的相关文章

  • 将PNG序列帧图片合成视频

    import globimport cv2def skadi idle img array 61 print 34 开始读取图片 34 修改此处为自己的路径for filename in glob glob r 34 F interact
  • 在树莓派3b/3b+上搭建rt-thread多核开发环境

    1 本文目的 nbsp nbsp nbsp 本 主要介绍如何快速 效的搭建树莓派rt thread的开发环境 按照 章的步骤 可以很快速的将rt thread SMP系统在树莓派上运 起来 2 准备条件 nbsp nbsp 1 raspbe
  • 百度在线人脸识别API简单实现教程

    这里 xff0c 记录一下百度人脸识别在线API的调用 xff0c 语言是python2 7 xff0c 供大家一起学习参考 本教程目录如下 1 申请百度人脸识别应用 2 获取token 3 图片的base64编码 4 人脸识别 5 结果绘
  • java中获取农历日期以及星期几

    34 status 34 200 34 msg 34 34 操作成功 xff01 34 34 success 34 true 34 data 34 34 weekend 34 34 星期二 34 34 date 34 34 2021年12月
  • syntax error: bad substitution是什么问题

    终端出现syntax error bad substitution是什么问题 解决办法 xff1a sudo dpkg reconfigure dash 在选择项中选N0 从 ubuntu 6 10 开始 xff0c ubuntu 就将先前
  • 如何获取自己的公网地址

    我们在上网的时候 xff0c 可以获取自己的公网地址 xff0c 比如在百度上输入ip地址 xff0c 就能显示自己的公网ip 下面讲解下 xff0c 从内网里面上网 xff0c 获取本机公网ip的原理 xff0c 如下所示 xff1a 本
  • 拯救被WSL占满的C盘

    适用场景 1 使用Windows 10做为开发平台 xff0c 并且C盘空间不是特别富裕 2 使用Windows自带的Windows Subsystem for Linux xff08 WSL xff09 默认将Liunx子系统安装在了C盘
  • 条件变量

    1 初始化条件变量pthread cond init include int pthread cond init pthread cond t cv const pthread condattr t cattr 返回值 xff1a 函数成功
  • python练习3:输入分数,输出对应的ABCD级别

    span class token keyword while span span class token boolean True span span class token punctuation span span class toke
  • ros Unable to locate package 找不到ROS软件包的问题解决

    这个问题可能由两个原因导致 xff1a 1 输入的软件包和ros版本不匹配 例如 xff0c 如果我是20 04的系统 xff0c ros版本为noetic xff0c 那么输入这行给1804 melodic准备的安装指令就会报错 xff1
  • python项目打包发布总结

    概览 这里主要收集python项目的打包 发布和部署的常用方法 xff0c 只是入门级别 xff0c 深入的流程还是以官方文档为准 xff08 链接每节都已经给出 xff09 distutils setuptools pip virtual
  • Mac Big Sur --ERROR launching JD-GUI

    适用于最新的macOS Monterey 更新系统后 xff0c 打开jd gui报如下错误 xff1a ERROR launching 39 JD GUI 39 No suitable Java version found on your
  • Centos7--FFmpeg编译安装

    一开始使用中文搜索 xff0c 照着csdn这份教程搞了一上午 xff0c 最后失败了 xff0c 恼火呀 换成英文搜索ffmpeg build arguments 点击第一条CompilationGuide FFmpeg xff0c 官方
  • 一种快速检测Mp4是否损坏的方法

    一种快速检测Mp4是否损坏的方法 由于项目上的需求 xff0c 需要一种能快速检测MP4文件是否有效 xff08 即能正常播放 xff09 的方法 网络上搜索到的绝大多数方案是使用ffmpeg或者ffprobe 以ffprobe为例 xff
  • java String类型转换BigDecimal类型最全工具类

    public class BigDecimalUtil String类型转换BigDecimal类型 public static BigDecimal StringToBigDecimal String str return new Big
  • Zookeeper leader选举源码分析(超详细)

    选举介绍 在开始分析选举的原理之前 xff0c 先了解几个重要的参数 服务器 ID xff08 myid xff09 比如有三台服务器 xff0c 编号分别是 1 2 3 编号越大在选择算法中的权重越大 zxid 事务 id xff08 Z
  • zookeeper集群部署

    伪集群 三份配置文件 z1 cfg tickTime 61 2000 initLimit 61 10 syncLimit 61 5 dataDir 61 Users twx code space internet zookeeper rel
  • zookeeper高级特性

    Multitenancy多租户 一般我们都是通过如下方式连接zk zkCli sh server 172 26 1 70 2181 172 26 1 71 2181 172 26 1 60 2181 我们也可以在连接参数后面追加一个路径 这
  • 【Windows】freeSSHd开启ssh出错

    描述 xff1a 打开freesshd设置面板的时候发现 SSH server is not running 下面是个红叉 xff0c 当我点击 Click here to Start 的时候 xff0c 提示 the specified
  • renderJson()返回的数据格式

    首先 xff0c 有一个实体类 xff0c KvmCluster 不用管父类 public class KvmCluster extends BaseReport 时间 public String timeStamp 主机名 public

随机推荐