Opencv圖像二維離散卷積原理


平滑技術也叫做過濾技術,可以用來去除圖像中的噪聲,常用的平滑處理的處理算法有基於二維離散卷積的高斯平滑、均值平衡、基於統計學方法的中值平滑、雙邊濾波、導向濾波等。二維離散卷積是基於兩個矩陣的一種計算方式,通過以下示例進行理解。

一.原理

\[I = \left ( \begin{matrix} 1&2\\ 3&4\\ \end{matrix} \right ) , K = \left ( \begin{matrix} -1&-2\\ -3&-4\\ \end{matrix} \right ) \]

首先將K逆時針翻轉180度,得到

\[K_{flip}=\left ( \begin{matrix} -4&-3\\ -2&-1\\ \end{matrix} \right ) \]

第二步 矩陣計算過程:


則I與K卷積的結果就是:

\[C_{full}=\left ( \begin{matrix} -1&-4&-4\\ -6&-20&-16\\ -9&-24&-16\\ \end{matrix} \right ) \]

這就是I和K的卷積結果,K稱為卷積核/卷積算子。

二.矩陣計算

1.矩陣擴充

\[I_{p(r,c)} = \begin{cases} I_{(r,c)}, & \text 0\leq r <H_{1},0\leq c <W_{1} \\ 0 ,& \text {else} \end{cases} \]

\[K_{p(r,c)} = \begin{cases} K_{(r,c)}, & \text 0\leq r <H_{2},0\leq c <W_{2} \\ 0 ,& \text {else} \end{cases} \]

由原理中所得的結果矩陣可知,結果矩陣H = ($$H_{1}=H_{2}$$), W= ($$W_{1}=W_{2}$$) ,此次對I和K矩陣進行填充,補0使其為結果矩陣形式。
2.矩陣堆疊
對I矩陣進行轉置操作,目的是使其成為一個列向量$$I_{p}$$
3.構造WW的循環矩陣
將$$K_{p}的每一行都構造成一個W
W的循環矩陣 $$ 循環矩陣的具體構造就是將每一行的轉置作為每一個構造的循環矩陣的第一列,然后由新構造的矩陣中第一列依次向下移位得到一個循環矩陣。

\[G_{r}=\begin{cases} K_{p(r,0)}& K_{p(r,W-1)} ---& K_{p(r,1)} \\ K_{p(r,1)}& K_{p(r,0)} ---& K_{p(r,3)} \\ ----- \\K_{p(r,W-1)}& K_{p(r,W-2)} ---& K_{p(r,0)} \end{cases} \]

4.構造循環矩陣G
以上面構造的循環矩陣為基礎,得到H個循環塊矩陣,循環矩陣G為:

\[G=\begin{cases} G_0 & G_{H-1} ---& G_1 \\ G_1 & G_{0} ---& G_2 \\ --- \\ G_{H-1} & G_{H-2} ---& G_0 \end{cases} \]

5.重新排列成H*W矩陣

\[根據二維卷積形式: C = G * I_{p} (其中C為一個(H*W)*1的列向量) ,將C重新排列成一個H*W的矩陣,取C的第一個前W的值作為第一行,取第二個前W的值作為第二行,且依次類推,最后得到一個H*W的矩陣,該矩陣就是我們之前得到的卷積矩陣 C_{full} \]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM