python实现暗通道去雾算法的示例


Posted in Python onSeptember 27, 2020

何凯明博士的去雾文章和算法实现已经漫天飞了,我今天也就不????簦?苯痈?鲎约?ython实现的完整版本,全部才60多行代码,简单易懂,并有简要注释,去雾效果也很不错。

在这个python版本中,计算量最大的就是最小值滤波,纯python写的,慢,可以进一步使用C优化,其他部分都是使用numpy和opencv的现成东东,效率还行。

import cv2
import numpy as np
 
def zmMinFilterGray(src, r=7):
  '''最小值滤波,r是滤波器半径'''
  '''if r <= 0:
    return src
  h, w = src.shape[:2]
  I = src
  res = np.minimum(I , I[[0]+range(h-1) , :])
  res = np.minimum(res, I[range(1,h)+[h-1], :])
  I = res
  res = np.minimum(I , I[:, [0]+range(w-1)])
  res = np.minimum(res, I[:, range(1,w)+[w-1]])
  return zmMinFilterGray(res, r-1)'''
  return cv2.erode(src, np.ones((2*r+1, 2*r+1)))           #使用opencv的erode函数更高效
def guidedfilter(I, p, r, eps):
  '''引导滤波,直接参考网上的matlab代码'''
  height, width = I.shape
  m_I = cv2.boxFilter(I, -1, (r,r))
  m_p = cv2.boxFilter(p, -1, (r,r))
  m_Ip = cv2.boxFilter(I*p, -1, (r,r))
  cov_Ip = m_Ip-m_I*m_p
 
  m_II = cv2.boxFilter(I*I, -1, (r,r))
  var_I = m_II-m_I*m_I
 
  a = cov_Ip/(var_I+eps)
  b = m_p-a*m_I
 
  m_a = cv2.boxFilter(a, -1, (r,r))
  m_b = cv2.boxFilter(b, -1, (r,r))
  return m_a*I+m_b
 
def getV1(m, r, eps, w, maxV1): #输入rgb图像,值范围[0,1]
  '''计算大气遮罩图像V1和光照值A, V1 = 1-t/A'''
  V1 = np.min(m,2)                     #得到暗通道图像
  V1 = guidedfilter(V1, zmMinFilterGray(V1,7), r, eps)   #使用引导滤波优化
  bins = 2000
  ht = np.histogram(V1, bins)               #计算大气光照A
  d = np.cumsum(ht[0])/float(V1.size)
  for lmax in range(bins-1, 0, -1):
    if d[lmax]<=0.999:
      break
  A = np.mean(m,2)[V1>=ht[1][lmax]].max()
     
  V1 = np.minimum(V1*w, maxV1)          #对值范围进行限制
   
  return V1,A
 
def deHaze(m, r=81, eps=0.001, w=0.95, maxV1=0.80, bGamma=False):
  Y = np.zeros(m.shape)
  V1,A = getV1(m, r, eps, w, maxV1)        #得到遮罩图像和大气光照
  for k in range(3):
    Y[:,:,k] = (m[:,:,k]-V1)/(1-V1/A)      #颜色校正
  Y = np.clip(Y, 0, 1)
  if bGamma:
    Y = Y**(np.log(0.5)/np.log(Y.mean()))    #gamma校正,默认不进行该操作
  return Y
 
if __name__ == '__main__':
  m = deHaze(cv2.imread('land.jpg')/255.0)*255
  cv2.imwrite('defog.jpg', m)

下面给两个运行效果吧

python实现暗通道去雾算法的示例

python实现暗通道去雾算法的示例

python实现暗通道去雾算法的示例

python实现暗通道去雾算法的示例

以上就是python实现暗通道去雾算法的示例的详细内容,更多关于python实现暗通道去雾算法的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python制作企业邮箱的爆破脚本
Oct 05 Python
PyQt5每天必学之布局管理
Apr 19 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
Python 字典中的所有方法及用法
Jun 10 Python
python实现取余操作的简单实例
Aug 16 Python
python爬虫---requests库的用法详解
Sep 28 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 Python
谈谈python垃圾回收机制
Sep 27 #Python
如何在python中处理配置文件代码实例
Sep 27 #Python
Python 开发工具通过 agent 代理使用的方法
Sep 27 #Python
python 读取、写入txt文件的示例
Sep 27 #Python
python 动态绘制爱心的示例
Sep 27 #Python
python批量修改文件名的示例
Sep 27 #Python
python 绘制国旗的示例
Sep 27 #Python
You might like
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
PHP url 加密解密函数代码
2011/08/26 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
利用python实现数据分析
2017/01/11 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
python函数定义和调用过程详解
2020/02/09 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
法国家具及室内配件店:home24
2017/01/21 全球购物
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
计算机专业应届毕业生自荐信
2013/09/26 职场文书
体育教师工作总结的自我评价
2013/10/10 职场文书
运动会稿件200字
2014/02/07 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
毕业论文致谢信
2015/05/14 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏