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 time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
Python中logging模块的用法实例
Sep 29 Python
Python基于有道实现英汉字典功能
Jul 25 Python
python开发之函数定义实例分析
Nov 12 Python
win10系统中安装scrapy-1.1
Jul 03 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
Sep 18 Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
numpy排序与集合运算用法示例
Dec 15 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
Python3 元组tuple入门基础
Feb 09 Python
python属于软件吗
Jun 18 Python
使用Python+Appuim 清理微信的方法
Jan 26 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
php中的一个中文字符串截取函数
2007/02/14 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
vuejs指令详解
2017/02/07 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
2020/08/22 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
不打扫卫生检讨书
2014/02/12 职场文书
纠风工作实施方案
2014/03/15 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
迎国庆演讲稿
2014/09/05 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
写给老师的感谢信
2015/01/20 职场文书
委托收款证明
2015/06/23 职场文书
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL