暗通道先驗+加權最小二乘 去霧 原理
本文主要講解,何愷明暗通道先驗去霧以及加權最小二乘演算法的原理部分,對應程式碼可在資源處下載。
1暗通道先驗去霧模型
公式(1)是常用的霧靄形成模型:
(1)
其中,I(x)為實際拍攝到的有霧視訊幀,J(x)為去霧後的原視訊幀,A表示全球大氣光成分,先對暗原色的亮度進行排序,從中選出暗原色亮度最大的畫素的0.1%的值,它們對應原圖中所有強度值的最大值即為A;t(x)用來描述太陽光通過媒介投射到攝像機過程中沒有被散射的部分,簡稱透射率圖或介質傳輸率,可表示為(0≤t(x)≤1)。而去霧就是通過I(x)得到J(x)的過程。方程右邊的J(x)t(x)叫做直接衰減項,A(1-t(x))則是大氣光成分,它反映了大氣散射光對成像光強的影響,造成了視訊幀的不同程度模糊和色調的偏移。
何愷明等通過大量統計,發現在自然場景視訊幀中非天空部分的區域性區域裡的某些畫素點,至少有一個顏色通道的值很低以至趨於0。因此進而他提出了暗通道先驗去霧模型,即對任意的自然場景無霧影象J(x),其暗通道滿足:
(2)
其中J(x)是無霧影象在RGB三個顏色通道中的暗原色,相對應的I(x)是某一RGB的單色通道的實際有霧幀,在以為中心的區域性鄰域內,將(2)式帶入(1)式後得
(3)
引數w是調整因子,且滿足0<w<1,其值越小,去霧效果越不明顯。新增w是為了針對性的保留視訊幀遙遠景物的霧,A被定義為某一單色通道的大氣光成分。因為戶外自然場景中總是會存在一些雜質,徹底去霧會造成視覺上失真,之後將(3)式求得的透射率圖帶入到(1)式中,即可求得去霧後圖像J(x)
(4)
暗通道先驗模型通常建立在戶外自然場景基礎上,當取景物件在較大範圍內和天空接近並且沒有陰影覆蓋的時候,視訊幀中的灰白色和空氣顏色接近,暗通道先驗模型會錯誤處理該區域的透射率,造成去霧後的對應區域上亮度降低,從而使得暗通道先驗假設不成立。另外由於含霧影象在某一鄰域內的RGB通道最小值和暗通道先驗求解的結果不匹配,而使暗通道先驗模型去霧造成去霧影象邊緣不平滑。綜上所述,對基於暗通道先驗的去霧演算法而言,獲取合適的透射率圖t(x)和正確的大氣光成分A,是得到無霧視訊的兩個關鍵因素。
2導向濾波和加權最小二乘濾波原理
2.1導向濾波原理
導向濾波由區域性線性模型發展而來,它作為一種高效且能夠提取方向資訊的濾波器組,任意方向的濾波器可以由一組基濾波器線性累加而成。何愷明首次將之用於影象去霧,針對計算透射率初估計值的過程中出現一定程度的塊效應,提出用導向濾波來細化之前得到的粗略透射率圖。
導向濾波輸出圖中的任意一個畫素點i可以表示為一個加權平均:
(5)
上式中i和j是處理畫素的像平面的橫座標和縱座標,wij(I)是可以作為目標效果的導向影象I和原始影象P。
在利用導向濾波時,定義核函式為:
(6)
根據上式可以看出,qi和Ii之間是區域性線性關係,其中i為畫素座標,I代表引導影象,q為結果影像,可以認為qi是在大小為wk、以畫素k為中心的視窗內所有畫素的線性變換。此處對應的就是經過優化後的透射率分佈圖,定義價值函式如下:
(7)
公式(7)中的E為正則化引數,主要是為了避免係數ak過大。之後採用最小二乘法求解得到係數如下:
(8)
(9)
其中uk是含霧影象I在視窗wk中的平均值,是I在視窗wk中的方差,|w|是視窗wk中畫素的數量,pk是待濾波影象p在視窗wk中的平均值。
在導向濾波器中,濾波半徑的選取對去霧後的效果有一定影響。當濾波半徑較大時,導向濾波圖會更大範圍內進行平行線輸出,使得透射率圖與有霧視訊幀的邊緣特徵更加相似且內容豐富,降低了邊緣不平滑現象。但是濾波半徑過大,會使無霧視訊幀在對應區域出現顏色過飽和或者去霧不足現象。
2.2加權最小二乘濾波原理
加權最小二乘法濾波能有效的保留視訊幀中的部分邊緣資訊。該演算法無法保留較多的對比度較小的邊緣,也不能一次性完整提取對比度較大的細節,所以需要漸進式提取邊緣。異方差性是相對於同方差而言的,隨機誤差項具有不同的方差,則稱線性迴歸模型存在異方差性,加權最小二乘法在很大程度上解決了異方差性問題,首先用某一權數對樣本觀測值或殘差加權,再使用普通最小二乘法估計引數模型。對於輸入視訊幀g,尋求結果視訊幀u,一方面希望u儘可能接近g,與此同時,u除了在g一些邊緣梯度變化比較大的地方外應該越平滑越好,形式上即尋求式(10)的值最小
(10)
其中下標p為畫素位置。資料項的目的是儘可能縮小u和g的差距,第二項則是用偏導數實現平滑,這和輸入的視訊幀g有很大關係。當g邊緣梯度變換很大時,我們希望其約束小一些,而當g邊緣梯度變換很小時,這些細節資訊可認為不重要,對其約束可以大一些。而ax和ay為平滑權重,一般取值在1.2至2.0之間,主要目的是控制其對梯度的敏感度。負責兩項的值平衡,從而使平滑效果有所不同。在視訊幀中,一維梯度中的運算元在任何位置都是不變的,在此可定義為常量,然後對求二階導數,在使式(10)取得最小值的情況下,可求得結果視訊幀u的最優值。
附上一些去霧效果:
相關推薦
暗通道先驗+加權最小二乘 去霧 原理
本文主要講解,何愷明暗通道先驗去霧以及加權最小二乘演算法的原理部分,對應程式碼可在資源處下載。1暗通道先驗去霧模型 公式(1)是常用的霧靄形成模型: (1)其中,I(x)為實際拍攝到的有霧視訊幀,J(x)為去霧後的原視訊
【影象處理】三種邊緣保持的濾波器(雙邊,引導,加權最小二乘)
從原理上分析,這幾種濾波器沒有太大的差別,都是基於最基本的思想:在梯度比較大的地方(edges)實現preserve,要求儘量不進行平滑,最好是輸出與輸入一樣;而在梯度比較小的地方,儘量的平滑一下,輸入與輸出可以有稍大的不同! 那麼從這個原理出
異方差性以及加權最小二乘優化
異方差性(heteroscedasticity )是相對於同方差而言的。所謂同方差,是為了保證迴歸引數估計量具有良好的統計性質,經典線性迴歸模型的一個重要假定:總體迴歸函式中的隨機誤差項滿足同方差性,即它們都有相同的方差。如果這一假定不滿足,即:隨機誤差項具有不同的方差,則
加權最小二乘(wls)濾波演算法原理及實現
加權最小二乘濾波WLS(weighted least squares)加上雙邊濾波,引導濾波是三種較為經典的邊緣保持性濾波演算法,該演算法最早見於論文:《Edge-Preserving Decompositions for Multi-Scale Tone and Det
python 最小二乘 leastsq 函數實現
誤差 實現 是個 ipy plt 筆記 matplot otl code 代碼修改自 http://www.cnblogs.com/NanShan2016/p/5493429.html 網上百度了一下,主要是兩個例子,一個利用了多項式函數,一個就是這個。有些細節沒看懂,
Spark機器學習(10):ALS交替最小二乘算法
mllib 測試 con 相互 idt color ted 個人 使用 1. Alternating Least Square ALS(Alternating Least Square),交替最小二乘法。在機器學習中,特指使用最小二乘法的一種協同推薦算法。如下圖所示,u表
最大似然估計與最小二乘
現在 最小 bayesian 我不知道 什麽 改變 我不 tps 有關 參考: 最大似然估計,就是利用已知的樣本結果,反推最有可能(最大概率)導致這樣結果的參數值。例如:一個麻袋裏有白球與黑球,但是我不知道它們之間的比例,那我就有放回的抽取10次,結果我發現我抽到了8次黑球
(九)最小二乘擬合二次曲線
.fig pac atp matrix plot .text Coding 運算 提取數據 1 #coding=utf-8 2 from numpy import * 3 import numpy as np 4 import matplotlib.pyplo
極大既然估計和高斯分布推導最小二乘、LASSO、Ridge回歸
baidu 器) ridge 連續概率 重要 eal 函數 應用 map 最小二乘法可以從Cost/Loss function角度去想,這是統計(機器)學習裏面一個重要概念,一般建立模型就是讓loss function最小,而最小二乘法可以認為是 loss function
線性最小二乘兩種方法
梯度下降 神經網絡 log des sum 直線 ini 結束 erro 線性最小二乘擬合 y = w0 +w1x (參數 w0, w1) (1)如何評價一條擬合好的直線 y = w0 +w1x 的誤差? "cost" of a given line : Res
最小二乘擬合
有用 初始 等於 計算 合成 mage RR 周期性 () 來自:某小皮 最優化函數庫Optimization 優化是找到最小值或等式的數值解的問題。scipy.optimization子模塊提供函數最小值,曲線擬合和尋找等式的跟的有用算法。 最小二乘擬合 假設有一組實驗數
MIT線性代數:16.投影矩陣和最小二乘
線性代數 技術 最小二乘 最小 image 代數 線性 圖片 投影 MIT線性代數:16.投影矩陣和最小二乘
解決異方差問題--加權最小二乘法
bubuko 異常 收入 信息 del seed 例如 假設 尋求 異方差問題 Ordinary Least Squares (OLS) 需要四個 - -有些人說五或六個 - 假設要滿足,但建模時我們經常會遇到異方差(Heteroskedasticity)問題, 那是
2018.08.28 ali 梯度下降法實現最小二乘
4.3 div 數量 ask pre oss 找到 1.7 二維 - 要理解梯度下降和牛頓叠代法的區別 #include<stdio.h> // 1. 線性多維函數原型是 y = f(x1,x2,x3) = a * x1 + b * x2 + c * x
Levmar:Levenberg-Marquardt非線性最小二乘算法
例子程序 最小二乘 form sele span img pack nco work Levmar:Levenberg-Marquardt非線性最小二乘算法 [email protected] Abstract. Levmar is GPL native ANSI C impl
matlab練習程序(最小二乘多項式擬合)
相關 sum 因此 使用 val fit width clas height 最近在分析一些數據,就是數據擬合的一些事情,用到了matlab的polyfit函數,效果不錯。 因此想了解一下這個多項式具體是如何擬合出來的,所以就搜了相關資料。 這個文檔介紹的還不錯,我估計
【Mark Schmidt課件】機器學習與資料探勘——普通最小二乘
本課件主要內容包括: 有監督學習:迴歸 示例:依賴與解釋變數 數字標籤的處理 一維線性迴歸 最小二乘目標 微分函式最小化 最小二乘解 二維最小二乘 d維最小二乘 偏微分
線性代數筆記18——投影矩陣和最小二乘
一維空間的投影矩陣 先來看一維空間內向量的投影: 向量p是b在a上的投影,也稱為b在a上的分量,可以用b乘以a方向的單位向量來計算,現在,我們打算嘗試用更“貼近”線性代數的方式表達。 因為p趴在a上,所以p實際上是a的一個子空間,可以將它看作a放縮x倍,因此向量p可以用p = xa來表示
數值分析 最小二乘 matlab
1. 已知函式在下列各點的值為 -1 -0.75 -0.5 0 0.25 0.5 0.75
迭代權重最小二乘演算法
迭代權重最小二乘(Iteratively reweighted least squares, IRLS) [1] 方法用於求解\(p\)範數(\(p\) norm)的最小化問題。問題如下: \[\arg \min_{x} \sum_{i} | y_i - f_i (x) |^p\] 通過迭代的方法,在每次迭代