本篇博客主要作用为学习代码段与快应用的使用,内容浅显,还请路过的大佬见谅>_<

暗通道去雾算法(Single image haze removal using dark channel prior)可以说是恺明大佬厚积薄发之作,作为其博士期间的第一篇投稿作品,可谓出道即触及巅峰,一举斩获CVPR2009最佳论文奖。

1.论文链接:

Single image haze removal using dark channel prior | IEEE Conference Publication | IEEE Xplorehttps://ieeexplore.ieee.org/document/5206515

2.论文的知识图谱链接:

Connected Papers | Find and explore academic papersConnected Papers is a visual tool to help researchers and applied scientists find academic papers relevant to their field of work.https://www.connectedpapers.com/main/db0fd1d8b1ef0bf19a137cd535166ed067455280/Single-Image-Haze-Removal-Using-Dark-Channel-Prior/graph

3.代码实现:

"""
1.去雾算法介绍博客:
http://blkstone.github.io/2015/08/20/single-image-haze-removal-using-dark-channel/
2.论文地址(2009 CVPR best paper):
https://paperswithcode.com/paper/single-image-haze-removal-using-dark-channel
3.资源下载(镜像)地址:
pip install [The Package You Want to Download] -i https://pypi.tuna.tsinghua.edu.cn/simple
ps. cv2 means opencv-python
"""
import cv2
import numpy as np
import argparse# 图片相关参数:
# 1.默认图片
defeat_photo = r'..\Input\haze\canon3.bmp'
# 2.待处理图片
photo_name = 'trees.png'
# 3.待处理图片所在目录地址
ImgInput = r'..\Input\haze\{}'.format(photo_name)
# 4.处理后图片保存地址
ImgFile = r'..\Output\HazeRemove'# 计算雾化图像的暗通道
def DarkChannel(img, size=15):"""暗通道的计算主要分成两个步骤:1.获取BGR三个通道的最小值2.以一个窗口做MinFilterps.这里窗口大小一般为15(radius为7)获取BGR三个通道的最小值就是遍历整个图像,取最小值即可"""r, g, b = cv2.split(img)min_img = cv2.min(r, cv2.min(g, b))kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (size, size))dc_img = cv2.erode(min_img, kernel)return dc_img# 估算全局大气光值
def GetAtmo(img, percent=0.001):"""1.计算有雾图像的暗通道2.用一个Node的结构记录暗通道图像每个像素的位置和大小,放入list中3.对list进行降序排序4.按暗通道亮度前0.1%(用percent参数指定百分比)的位置,在原始有雾图像中查找最大光强值"""mean_perpix = np.mean(img, axis=2).reshape(-1)mean_topper = mean_perpix[:int(img.shape[0] * img.shape[1] * percent)]return np.mean(mean_topper)# 估算透射率图
def GetTrans(img, atom, w):"""w为去雾程度,一般取0.95w的值越小,去雾效果越不明显"""x = img / atomt = 1 - w * DarkChannel(x, 15)return tdef GuidedFilter(p, i, r, e):""":param p: input image:param i: guidance image:param r: radius:param e: regularization:return: filtering output q"""# 1mean_I = cv2.boxFilter(i, cv2.CV_64F, (r, r))mean_p = cv2.boxFilter(p, cv2.CV_64F, (r, r))corr_I = cv2.boxFilter(i * i, cv2.CV_64F, (r, r))corr_Ip = cv2.boxFilter(i * p, cv2.CV_64F, (r, r))# 2var_I = corr_I - mean_I * mean_Icov_Ip = corr_Ip - mean_I * mean_p# 3a = cov_Ip / (var_I + e)b = mean_p - a * mean_I# 4mean_a = cv2.boxFilter(a, cv2.CV_64F, (r, r))mean_b = cv2.boxFilter(b, cv2.CV_64F, (r, r))# 5q = mean_a * i + mean_breturn q# 去雾主程序
def DeHaze():path, output, photo, t0, w = opt.input, opt.output, opt.photo, opt.threshold_value, opt.dehaze_degree# 读取待处理图像im = cv2.imread(path)# 压缩RGB通道值于0到1img = im.astype('float64') / 255img_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY).astype('float64') / 255atom = GetAtmo(img)trans = GetTrans(img, atom, w)trans_guided = GuidedFilter(trans, img_gray, 20, 0.0001)"""1.t0 最小透射率值,一般取0.252.投射图t 的值过小——>图像会整体向白场过度3.因此一般设置一阈值t0:当t值小于t0时,令t=t0"""trans_guided = cv2.max(trans_guided, t0)result = np.empty_like(img)for i in range(3):result[:, :, i] = (img[:, :, i] - atom) / trans_guided + atom# 显示&保存结果cv2.imshow("source", img)cv2.imshow("result", result)cv2.waitKey()if output is not None:cv2.imwrite("{}/{}".format(output, photo), result * 255)# 可通过命令行传递参数
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--input', default=ImgInput)
parser.add_argument('-o', '--output', default=ImgFile)
parser.add_argument('-p', '--photo', default=photo_name)
#t为最小透射率,一般取0.25。投射图t 的值过小——>图像会整体向白场过度
parser.add_argument('-t', '--threshold_value', default=0.25)
#w为去雾程度,一般取0.95。w的值越大,去雾效果越明显
parser.add_argument('-w', '--dehaze_degree', default=0.95)
opt = parser.parse_args()
print(f'parser.parse_args(解析器的参数):\n{opt}')# 执行主程序
if __name__ == '__main__':if opt.input is None:DeHaze(defeat_photo)else:DeHaze()

4.1检测效果:

4.2项目代码(pycharm):

暗通道去雾(何恺明的成名作):简洁与效果并存的传统图像处理算法相关推荐

  1. 何恺明暗通道去雾(阅读笔记)

    何恺明暗通道去雾文章阅读 刘海山,2021年6月24日 文献引文信息: He, K. M., Sun, J. & Tang, X. O. Single Image Haze Removal U ...

  2. Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...

    授权自AI科技大本营(ID:rgznai100) 本文约3600字,建议阅读7分钟. 本文为你介绍FFA去雾算法和暗通道去雾算法搭建. 在过去的几十年中,单图像去雾作为基本的低级视觉任务已引起了计算机 ...

  3. Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来! | 附代码

    在过去的几十年中,单图像去雾作为基本的低级视觉任务已引起了计算机视觉社区和人工智能公司的越来越多的关注.其中最为典型的便是北大&北航提出FFA-Net去雾新网络和何凯明博士提出的暗通道去雾算法 ...

  4. 纯c语言实现的改进暗通道去雾算法测试程序(附赠大量测试图像),基于改进暗通道先验算法的图像去雾...

    邱清辉 摘要:针对普通暗通道先验算法去雾能力的不足,本文提出了一种改进算法,通过采用高斯平滑将原图像分为基础子图和细节子图,基础子图采用暗通道先验算法,细节子图采用gamma变换方法,再采用图像融合进 ...

  5. 半年以来的图像去雾总结-图像去雾(一)暗通道去雾

    图像去雾最好的算法原型最好的莫过于何凯明博士的论文--好好阅读,必有灵感 在接下来的博客中,我会分步介绍各个图像去雾算法的研究和对比,在这里,首先介绍最经典的何凯明博士的暗通道去雾算法了,后面的博客有 ...

  6. 暗通道去雾法-对算法的理解Dark Channel Prior

    暗通道最早是由He提出的,并且也发展得很快,具体的在这里不说,这篇文章,只是谈一下暗通道去雾的实现过程 1.该方法最原始的模型是I=Jt+A(1-t),这个模型在我的其他文章中有详细介绍,这里不详细讲 ...

  7. Python实现暗通道去雾算法——清晰还原雾天景色

    Python实现暗通道去雾算法--清晰还原雾天景色 在雾天拍摄照片时,画面会变得模糊不清,影响了图片的观感和质量.为了解决这个问题,学术界提出了一种称为"暗通道先验"的方法,这种方 ...

  8. opencv-dark channel -实现暗通道去雾详解

    1.暗通道的概念和含义 暗通道算法是由何恺明在CVPR论文<Single ImageHaze Removalusing Dark Channel Prior>中提出的. 图像去雾的模型: ...

  9. 暗通道去雾 python实现

    本文为基于何恺明博士的Single Image Haze Removal Using Dark Channel Prior和Guided Image Filtering两篇论文的去雾算法python代 ...

最新文章

  1. 【杂谈】关于数据和模型,初学者极容易忽视的两个问题!
  2. TX-LCN分布式事务框架开发文档
  3. QT的QBluetoothDeviceDiscoveryAgent类的使用
  4. Sqoop import导入表时报错java.lang.ClassNotFoundException: org.json.JSONObject
  5. 使用Java Spring消费MySQL中的数据库存储过程
  6. IOS开发基础之屏幕组件适配添加约束
  7. Windows Workflow Foundation - [介绍及相关资源]
  8. 时间轴的实现(简单到爆炸)
  9. Ubuntu下常用命令总结
  10. IntelliJ Idea学习笔记004---IDEA中maven没有了
  11. PHP 编写接口并在header中进行简单的校验
  12. 推荐:百亿级微信红包的高并发资金交易系统设计方案
  13. 免费的银行联行号查询/接口
  14. 基于github上camera开源框架CameraKit,实现仿微信拍照摄像功能
  15. 正则表达式中常用符号
  16. ElasticSearch 一文读懂
  17. 用python批量导入阿里云安全组规则
  18. USB VID和PID
  19. c语言a-gt;ave=0.0什么意思?,来位c语言的大神把,来把这个程序解释一遍吧!跪求啊...
  20. php用户登录论坛系统,discuz论坛 用户登录 后台程序代码

热门文章

  1. GB28181平台如何接入无人机实现智能巡检?
  2. 学生管理系统(总结)
  3. Java面向对象总结
  4. Linux比较重要命令使用总结
  5. Mars3D(含Cesium)数据及服务篇:发布三维数据服务
  6. 将树莓派连接到显示器
  7. 个人笔记:数据库——数据库如何进行备份?
  8. Cetos7更改yum源镜像实现安装ninja-build软件包
  9. web大学生个人网站作业模板——上海旅游景点介绍网页代码 家乡旅游网页制作模板 大学生静态HTML网页源码...
  10. 麦克风离计算机主机多远,唱歌的时候,嘴离麦克风多远最好听?