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 相关文章推荐
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
python使用matplotlib绘制柱状图教程
Feb 08 Python
Python入门必须知道的11个知识点
Mar 21 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
PyQt5 pyqt多线程操作入门
May 05 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
django之自定义软删除Model的方法
Aug 14 Python
python中的数组赋值与拷贝的区别详解
Nov 26 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
openCV提取图像中的矩形区域
Jul 21 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
Jan 29 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/03/18 PHP
PHP 读取文件的正确方法
2009/04/29 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
Python2随机数列生成器简单实例
2017/09/04 Python
python查看模块,对象的函数方法
2018/10/16 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
应届生煤化工求职信
2013/10/21 职场文书
科室工作的个人自我评价
2013/10/30 职场文书
建筑项目策划书
2014/01/13 职场文书
汉语言文学职业规划
2014/02/14 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
购房委托书
2014/10/15 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
导游词之扬州大明寺
2019/10/09 职场文书