做視頻網站服務器怎么選擇圖片搜索圖片識別
1、保邊濾波背景
保邊濾波器的代表包括雙邊濾波、引導濾波,但是這類濾波器有一個問題,它們均將待處理的像素點放在了方形濾波窗口的中心。但如果待處理的像素位于圖像紋理或者邊緣,方形濾波核卷積的處理結果會導致這個邊緣變模糊。
基于這個觀察,《Side Window Filtering》的作者提出了側窗濾波,改善邊緣被濾波模糊的現(xiàn)象。
2、側窗濾波原理分析
因為傳統(tǒng)方法都使用全窗口回歸,也就是把窗的中心位置放在待處理像素的位置。即便是用非線性各向異性加權,仍然無法杜絕沿著圖像邊緣的法向擴散(可能只是沿著邊緣的擴散比較大,而沿著法線的擴散的比較小,比較小也是擴散,這是傳統(tǒng)方法不保邊的本質原因)。
基于這一分析,把窗口的邊緣直接放在待處理像素的位置呢?就切斷了可能的法線方向的擴散。這就是這篇文章的核心思想。
有人可能會說:這跟雙邊濾波的空間加權和灰度值加權非常像啊!但其實還是有本質的區(qū)別。我們的方法本質上切斷了法向擴散,而不是像之前的保邊算法那樣僅僅是減少了法向擴散。因此,我們的方法從數學原理上就可以保證保邊。而之前的方法本質上是不能保邊的。
以上內容摘抄作者發(fā)的文章: https://zhuanlan.zhihu.com/p/58326095
3、側窗濾波算法
常見的濾波算法都是創(chuàng)建方形濾波核,濾波核中心移動到待處理像素進行卷積。比如均值濾波、盒子濾波核和高斯濾波等,濾波處理結果 I i I_{i} Ii?是像素的鄰域窗口內像素加權求和結果。
I i = ∑ j ∈ Ω i w i j q j I_{i} = \sum_{j\in\Omega_{i}} w_{ij}q_{j} Ii?=j∈Ωi?∑?wij?qj?
其中, Ω i \Omega_{i} Ωi?是像素i的鄰域窗口, w i j w_{ij} wij?是權重, q q q是輸入圖像, I I I是濾波輸出圖像, q j q_{j} qj?是鄰域像素值
影響濾波結果的是 w w w權重大小、濾波窗口大小形狀等。
當像素在邊緣,鄰域窗口的選擇應該在與邊緣處在同一側,不能跨過邊緣,提出邊緣保持的側窗濾波算法。將每個目標像素視為潛在邊緣,并在其周圍生成多個局部窗口(稱為側窗口),每個窗口將目標像素與窗口的一側或角(而不是中心)對齊。
這篇文章的核心思想:將待處理的像素置于濾波窗口的某個合適的邊緣,使得濾波窗口盡可能地位于邊緣的一側,切斷了可能的法線方向的擴散
4、側窗濾波算法實現(xiàn)
具體到一個像素如何選擇哪一個方向?橫平豎直的子窗口可以利用可分離濾波來加速計算??梢岳弥丿B的子窗口來減少重復計算。所以,最終的計算量只是原來濾波器的2到3倍。
定義的側窗(Side Window),包含參數 θ \theta θ、 γ \gamma γ、 ρ \rho ρ,參數 θ \theta θ是窗口與水平線的夾角, γ \gamma γ為窗口半徑, ρ \rho ρ作為控制窗口長度的參數且 ρ ∈ { 0 , r } \rho\in \{0,r\} ρ∈{0,r}。
如上圖所示,側窗可以根據參數 θ \theta θ、 γ \gamma γ、 ρ \rho ρ等參數進行調整。
通過改變 θ \theta θ的值我們便能控制窗口的朝向進而決定將窗口的哪一條邊放在待處理像素之上。在 γ \gamma γ 固定的情況下,控制 ρ \rho ρ的大小就能控制窗口縱向的長度。
為了保證待處理像素 ( x , y ) (x,y) (x,y) 一定位于窗口邊緣或者邊角處,直接枚舉8個可能的方向。 L 、 R 、 U 、 D 、 N W 、 N E 、 S W 、 S E L、R、U、D、NW、NE、SW、SE L、R、U、D、NW、NE、SW、SE,分別是左、右、上、下、西南、西北、東南、東北。這8類特定的窗口,計算8個窗口的濾波結果,對比原始值最接近的選擇那個為最佳的方向。保留邊緣意味著我們希望最小化邊緣處輸入和輸出之間的距離,即濾波器輸出應與邊緣處的輸入相同或盡可能接近。
8個方向濾波窗口示意如下圖:
ρ = r \rho=r ρ=r時,得到窗口 L 、 R 、 U 、 D L、R、U、D L、R、U、D,當 ρ = 0 \rho=0 ρ=0時,不同 θ \theta θ對應不同側窗,見下圖。
應用濾波核F在不同的側窗窗口,都得到濾波輸出 I i θ , ρ , γ I_{i}^{\theta,\rho,\gamma} Iiθ,ρ,γ?,需要滿足 θ = k ? π / 2 , k ∈ [ 0 , 3 ] \theta=k*\pi/2,k\in[0,3] θ=k?π/2,k∈[0,3]且 ρ ∈ { 0 , r } \rho\in\{0,r\} ρ∈{0,r}
I i θ , ρ , γ = F ( q i , θ , γ , ρ ) I_{i}^{\theta,\rho,\gamma} =F(q_{i},\theta,\gamma,\rho) Iiθ,ρ,γ?=F(qi?,θ,γ,ρ)
對于某一像素 (x,y) ,它的側窗數量可以是無窮多個,我們只選取8個便于計算的特殊角度的窗口,然后再通過比較各個窗口處理的效果最終選出最合適的窗口。
I s w f = arg?min ? ? I i θ , ρ , γ ∥ q i ? I i θ , ρ , γ ∥ 2 2 I_{swf}=\argmin_{\forall {I_{i}^{\theta,\rho,\gamma}}} \| q_{i} - I_{i}^{\theta,\rho,\gamma}\|_{2}^{2} Iswf?=?Iiθ,ρ,γ?argmin?∥qi??Iiθ,ρ,γ?∥22?
基于這種side window的思想,我們可以把傳統(tǒng)的Box Filter,Gaussian Filter,median Filter,Bilateral Filter,Guided Filter等等都變成Side Window版本。
5、側窗濾波算法應用
以 box濾波為例,融合側窗濾波的為 S-box。普通box邊緣被模糊,sbox更保邊。對不同類型的邊緣進行濾波處理,邊緣包括以下幾種,見圖示:
a)gvertical edge (垂直邊緣)
d)horizontal edge(水平邊緣)
g)diagonal edge(對角邊緣)
j)corner(角邊緣)
m)ramp edge (斜坡邊緣)
p)roof edge(屋頂邊緣)
下圖時BOX和s-box的計算結果
綜上,可以得到,不同的側窗類型可以獲得不同的結果。
-
L、NW、SW側窗口可以保留the edges on the left of the vertical edge(垂直邊緣左側的邊緣)。很容易推斷出R、NE、SE側窗口可以保留the edges on the right of the vertical edge(垂直邊緣右側的邊緣)。
-
U、NW、NE側窗口可以保留the edges above the horizontal edge(水平邊緣以上的邊緣)。同樣,很容易證明D、SW、SE側窗可以保留the edges below the horizontal edge(水平邊緣以下的邊緣)。
-
NW側窗口可以保留edges above the diagonal edge and on the corner(對角線邊緣上方和拐角上的邊緣)。很容易推斷出,NE、SW、SE側窗可以保留diagonal edges and corner with other directions(與其他方向的對角邊和角)。
-
L、NW和SW側窗可以保留ramp edge。
-
側窗處理roof edge的效果相對較差
6、側窗濾波算法仿真
仿真實驗,將側窗技術嵌入到高斯濾波器、中值濾波器、雙邊濾波器和導頻濾波器等中,仿真結果見下圖,對比改進后效果提升程度。
除此之外還有別的應用場景(比如平滑,HDR應用,結構紋理分解,深度估計,上顏色等),這里就不展示了,融合側窗濾波思路的效果更好一些,感興趣的可以看看原文。
參考文章:
https://zhuanlan.zhihu.com/p/58326095