OpenCV 4.10.0
开放源代码计算机视觉
|
在本教程中,我们将介绍模糊变换的基本概念。您将学习
提供的解释需要具备基本的数学知识。所有相关论文均已引用,并且大部分可在 https://www.researchgate.net/ 上获取。
近年来,F 转换理论在多个方向得到了深入的发展。在图像处理方面,它已在图像压缩和降噪、图像融合、边缘检测以及图像重建中得到成功应用 [218] [69] [280] [216] [215] [286]。F 转换是一种将连续/离散函数与其有限个 F 转换分量相对应技术。在图像处理中,图像由两个自变量的强度函数标识,后者的 F 转换由分量矩阵给出。
让我们介绍一下 2D 灰度图像 \(I\) 的 F 转换,它被视为一个函数 \(I:[0,M]\times [0,N]\to [0,255]\),其中 \([0,M]=\{0,1,2,\ldots,M\}; [0,N]=\{0,1,2,\ldots,N\}\)。假设图像定义在属于集合 \(P\) 的点(像素)上,其中 \(P=\{(x,y)\mid x=0,1,\ldots, M;y=0,1,\ldots, N\}\)。
设 \(A_0, \dots ,A_m\) 和 \(B_0, \dots ,B_n\) 为基本函数,\(A_0, \dots ,A_m : [0,M] \to [0, 1]\) 是\([0,M]\) 的模糊划分,\(B_0, \dots ,B_n :[0,N]\to [0, 1]\) 是\([0,N]\) 的模糊划分。假设像素集合 \(P\) 相对于所选划分足够密集。这意味着对于所有 \(k\in{0,\dots, m}(\exists x\in [0,M]) \ A_k(x)>0\),以及对于所有 \(l\in{0,\dots, n}(\exists y\in [0,N])\ B_l(y)>0\)。
\(F^0\)
我们称实数矩阵 \(F^0_{mn}[I] = (F^0_{kl})\) 为 \(I\) 相对于 \(\{A_0, \dots,A_m\}\) 和 \(\{B_0, \dots,B_n\}\) 的(离散)F 转换,如果对于所有 \(k=0,\dots,m,\ l=0,\dots,n\)
\[ F^0_{kl}=\frac{\sum_{y=0}^{N}\sum_{x=0}^{M} I(x,y)A_k(x)B_l(y)}{\sum_{y=0}^{N}\sum_{x=0}^{M} A_k(x)B_l(y)}. \]
系数 \(F^0_{kl}\) 称为 \(F^0\) 转换的分量。
\(F^1\)
\(F^1\) 转换已在 [217] 中提出。我们称矩阵 \(F^1_{mn}[I] = (F^1_{kl}), k=0,\ldots, m, l=0,\ldots, n\),是 \(I\) 相对于 \(\{A_k\times B_l\mid k=0,\ldots, m, l=0,\ldots, n\}\) 的 \(F^1\) 转换,并且 \(F^1_{kl}\) 是相应的 \(F^1\) 转换分量。
\(F^1\)-变换 \(I\) 的分量是以以下形式的线性多项式:
\[ F^1_{kl}(x,y)= c^{00}_{kl} + c^{10}_{kl}(x-x_k) + c^{01}_{kl}(y-y_l), \]
其中,系数由以下内容给出:
\[ c_{kl}^{00} =\frac{\sum_{y=0}^{N}\sum_{x=0}^{M} I(x,y)A_k(x)B_l(y)}{\sum_{y=0}^{N}\sum_{x=0}^{M} A_k(x)B_l(y)}, \\ c_{kl}^{10} =\frac{\sum_{y=0}^{N}\sum_{x=0}^{M} I(x,y)(x - x_k)A_k(x)B_l(y)}{\sum_{y=0}^{N}\sum_{x=0}^{M} (x - x_k)^2A_k(x)B_l(y)}, \\ c_{kl}^{01} =\frac{\sum_{y=0}^{N}\sum_{x=0}^{M} I(x,y)(y - y_l)A_k(x)B_l(y)}{\sum_{y=0}^{N}\sum_{x=0}^{M} (y - y_l)^2A_k(x)B_l(y)}. \]
F 变换技术使用两个步骤:正向和逆向。上一部分中对正向步骤进行了说明,而逆向步骤如下:
\[ O(x,y)=\sum_{k=0}^{m}\sum_{l=0}^{n} F^d_{kl}A_k(x)B_l(y), \]
其中,\(O\) 是输出(重构)图像,\(d\) 是 F 变换的度数。事实上,该算法计算输入图像 \(I\) 的 F 变换分量,然后将分量展开到 \(I\) 的大小。有关详细信息,请参阅 [215]。可以从两个不同的视图应用于图像处理。
像素会被逐个处理,以找到针对各个像素的适当基本函数。这将恰好有四个,每个方向两个。我们需要在内存中使用一些辅助结构来收集它们的值。这些值将用于相关模糊分量分母。这种方法的实施使用关键词 FL
作为快速处理(因为有更多优化措施)和线性基本函数。
以这种方式,图像会被划分为规则区域。每个区域使用核窗口分别处理。这种方法受益于易于理解且基于矩阵的处理,具有直接的并行化。
这种方法使用核 \(g\)。让我们展示一个半径 \(h = 2\) 的线性案例作为示例。
\[ A = (0, 0.5, 1, 0.5, 0) \\ B^T = (0, 0.5, 1, 0.5, 0) \\ g = AB^T=\left( \begin{array}{ccccc} 0 & 0 & 0 & 0 & 0 \\ 0 & 0.25 & 0.5 & 0.25 & 0 \\ 0 & 0.5 & 1 & 0.5 & 0 \\ 0 & 0.25 & 0.5 & 0.25 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ \end{array} \right) \]