最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)暗通道去霧算法的示例

 更新時間:2020年09月27日 12:00:20   作者:zmshy2128  
這篇文章主要介紹了python實現(xiàn)暗通道去霧算法的示例,幫助大家更好的利用python處理圖像,感興趣的朋友可以了解下

何凱明博士的去霧文章和算法實現(xiàn)已經(jīng)漫天飛了,我今天也就不啰里啰唆,直接給出自己python實現(xiàn)的完整版本,全部才60多行代碼,簡單易懂,并有簡要注釋,去霧效果也很不錯。

在這個python版本中,計算量最大的就是最小值濾波,純python寫的,慢,可以進一步使用C優(yōu)化,其他部分都是使用numpy和opencv的現(xiàn)成東東,效率還行。

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函數(shù)更高效
def guidedfilter(I, p, r, eps):
  '''引導(dǎo)濾波,直接參考網(wǎng)上的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(chǔ), V1 = 1-t/A'''
  V1 = np.min(m,2)                     #得到暗通道圖像
  V1 = guidedfilter(V1, zmMinFilterGray(V1,7), r, eps)   #使用引導(dǎo)濾波優(yōu)化
  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實現(xiàn)暗通道去霧算法的示例的詳細內(nèi)容,更多關(guān)于python實現(xiàn)暗通道去霧算法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python with語句用法原理詳解

    Python with語句用法原理詳解

    這篇文章主要介紹了Python with語句用法原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 原來我一直安裝 Python 庫的姿勢都不對呀

    原來我一直安裝 Python 庫的姿勢都不對呀

    平常我都是直接執(zhí)行 pip install 安裝的第三方庫,很多教程也是這么介紹的,一直以來我都認為這是標準的、正確的安裝 Python 第三方庫的姿勢。下面小編給大家分享一篇教程,一起看看吧
    2019-11-11
  • 詳解Django框架中用context來解析模板的方法

    詳解Django框架中用context來解析模板的方法

    這篇文章主要介紹了詳解Django框架中用context來解析模板的方法,Django是重多高人氣Python框架中最為著名的一個,需要的朋友可以參考下
    2015-07-07
  • 解決Python3下map函數(shù)的顯示問題

    解決Python3下map函數(shù)的顯示問題

    今天小編就為大家分享一篇解決Python3下map函數(shù)的顯示問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Keras搭建M2Det目標檢測平臺示例

    Keras搭建M2Det目標檢測平臺示例

    這篇文章主要為大家介紹了Keras搭建M2Det目標檢測平臺實現(xiàn)的源碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python 字符串類型列表轉(zhuǎn)換成真正列表類型過程解析

    Python 字符串類型列表轉(zhuǎn)換成真正列表類型過程解析

    這篇文章主要介紹了Python 字符串類型列表轉(zhuǎn)換成真正列表類型過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • CPython 垃圾收集器檢測循環(huán)引用詳解

    CPython 垃圾收集器檢測循環(huán)引用詳解

    這篇文章主要為大家介紹了CPython 垃圾收集器檢測循環(huán)引用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • python實現(xiàn)打開手機app并點擊操作

    python實現(xiàn)打開手機app并點擊操作

    這篇文章主要介紹了python實現(xiàn)打開手機app并點擊操作,本文分為兩部分一部分是打開應(yīng)用,第二部分是調(diào)式手機連接電腦,需要的朋友可以參考下
    2022-04-04
  • Python3 導(dǎo)入上級目錄中的模塊實例

    Python3 導(dǎo)入上級目錄中的模塊實例

    今天小編就為大家分享一篇Python3 導(dǎo)入上級目錄中的模塊實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python使用multiprocessing模塊實現(xiàn)帶回調(diào)函數(shù)的異步調(diào)用方法

    python使用multiprocessing模塊實現(xiàn)帶回調(diào)函數(shù)的異步調(diào)用方法

    這篇文章主要介紹了python使用multiprocessing模塊實現(xiàn)帶回調(diào)函數(shù)的異步調(diào)用方法,實例分析了multiprocessing模塊異步調(diào)用的相關(guān)使用技巧,需要的朋友可以參考下
    2015-04-04

最新評論

兴隆县| 呈贡县| 万宁市| 灵台县| 普安县| 合山市| 邻水| 中西区| 沈阳市| 江城| 平舆县| 曲周县| 天长市| 靖西县| 湄潭县| 桂平市| 临湘市| 揭西县| 桦川县| 奇台县| 唐山市| 中西区| 固安县| 阿拉善右旗| 灌南县| 金山区| 阿尔山市| 新泰市| 扶沟县| 剑河县| 怀宁县| 高陵县| 肇州县| 论坛| 通山县| 阿鲁科尔沁旗| 东丰县| 庆城县| 邳州市| 内江市| 江孜县|