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实现的一个找零钱的小程序代码分享
Aug 25 Python
Python中tell()方法的使用详解
May 24 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
Python PIL库图片灰化处理
Apr 07 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
python和c语言哪个更适合初学者
Jun 22 Python
python程序如何进行保存
Jul 03 Python
python在CMD界面读取excel所有数据的示例
Sep 28 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
Python趣味挑战之教你用pygame画进度条
May 31 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遍历数组的4种方法总结
2014/07/05 PHP
Yii分页用法实例详解
2014/12/04 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
python实现合并两个数组的方法
2015/05/16 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
Python爬虫文件下载图文教程
2018/12/23 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
Python自动抢红包教程详解
2019/06/11 Python
python实现简单成绩录入系统
2019/09/19 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
python实现超市商品销售管理系统
2019/10/25 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
python实现图片转字符画
2021/02/19 Python
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
趣味比赛活动方案
2014/02/15 职场文书
公益广告语集锦
2014/03/13 职场文书
《开国大典》教学反思
2014/04/19 职场文书
植树造林的宣传标语
2014/06/23 职场文书
银行奉献演讲稿
2014/09/16 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android