相关滤波
为本篇博文表述方便,特将前几篇中几个重要的公式在此一并贴出,不懂的可以去看前几篇博文。
w=(XTX+λI)−1XTy(1)
<script type="math/tex; mode=display" id="MathJax-Element-1">{\bf{w}} = {({{\bf{X}}^{\rm{T}}}{\bf{X}} + \lambda {\bf{I}})^{ - 1}}{{\bf{X}}^{\rm{T}}}{\bf{y}}\tag{1}</script>
w=(XHX+λI)−1XHy(2)
<script type="math/tex; mode=display" id="MathJax-Element-2">{\bf{w}} = {({{\bf{X}}^{\rm{H}}}{\bf{X}} + \lambda {\bf{I}})^{ - 1}}{{\bf{X}}^{\rm{H}}}{\bf{y}}\tag{2}</script>
α=(K+λI)−1y(3)
<script type="math/tex; mode=display" id="MathJax-Element-3">\alpha = {({\bf{K}} + \lambda {\bf{I}})^{ - 1}}{\bf{y}}\tag{3}</script>
A+B=C(a+b)(4)
<script type="math/tex; mode=display" id="MathJax-Element-4">{\bf{A}} + {\bf{B}} = C({\bf{a}} + {\bf{b}})\tag{4}</script>
A⋅B=C(F−1(F(a)⊙F(b)))(5)
<script type="math/tex; mode=display" id="MathJax-Element-5">{\bf{A}} \cdot {\bf{B}} = C\left( {{{\cal F}^{ - 1}}\left( {{\cal F}({\bf{a}}) \odot {\cal F}({\bf{b}})} \right)} \right)\tag{5}</script>
XT=F⋅diag(F∗(x))⋅FH(6)
<script type="math/tex; mode=display" id="MathJax-Element-6">{{\bf{X}}^{\rm{T}}} = {\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}}\tag{6}</script>
X−1=F⋅diag(F(x))−1⋅FH(7)
<script type="math/tex; mode=display" id="MathJax-Element-7">{{\bf{X}}^{ - 1}} = {\bf{F}} \cdot diag{\left( {{\cal F}({\bf{x}})} \right)^{ - 1}} \cdot {{\bf{F}}^{\rm{H}}}\tag{7}</script>
F(Xy)=F∗(x)⊙F(y)(8)
<script type="math/tex; mode=display" id="MathJax-Element-8">{\cal F}({\bf{Xy}}) = {{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{y}})\tag{8}</script>
线性相关滤波
首先考虑一维样本,即一行(N个)图像像素,每个样本只有一维特征,当使用线性岭回归时,其解为式(1),其中的X<script type="math/tex" id="MathJax-Element-9">{\bf{X}}</script>本质上是一个列向量。当引入循环矩阵之后,每个样本的特征被对应的扩展为由所有样本组成的循环向量,即X<script type="math/tex" id="MathJax-Element-10">{\bf{X}}</script>成为一个N×N的矩阵,其图形化表示如下图所示。
循环矩阵是联系样本时域空间与频域空间的纽带,引入循环矩阵之后,线性岭回归的解为式(2),其XHX<script type="math/tex" id="MathJax-Element-11">{{\bf{X}}^{\rm{H}}}{\bf{X}}</script>项可做如下简化:
XHX=F⋅diag(F∗(x))⋅FH⋅F⋅diag(F(x))⋅FH=F⋅diag(F∗(x))⋅diag(F(x))⋅FH=F⋅diag(F∗(x)⊙F(x))⋅FH
<script type="math/tex; mode=display" id="MathJax-Element-12">\displaylines{ {{\bf{X}}^{\rm{H}}}{\bf{X}} = {\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}} \cdot {\bf{F}} \cdot diag\left( {{\cal F}({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}} \cr = {\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}})} \right) \cdot diag\left( {{\cal F}({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}} \cr = {\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}} \cr} </script>
可以看出,
XHX<script type="math/tex" id="MathJax-Element-13">{{\bf{X}}^{\rm{H}}}{\bf{X}}</script>项也是循环矩阵,其中
F∗(x)⊙F(x)<script type="math/tex" id="MathJax-Element-14">{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{x}})</script>项在信号处理领域称为自相关(auto-correlation)。考虑到单位矩阵
I<script type="math/tex" id="MathJax-Element-15">{\bf{I}}</script>是对角阵,
F<script type="math/tex" id="MathJax-Element-16">{\bf{F}}</script>是酉矩阵,根据循环矩阵的性质,则可继续简化如下:
w=(XHX+λI)−1XHy=(F⋅diag(F∗(x)⊙F(x))⋅FH+λI)−1⋅F⋅diag(F∗(x))⋅FH⋅y=(F⋅diag(F∗(x)⊙F(x)+λ)⋅FH)−1⋅F⋅diag(F∗(x))⋅FH⋅y=F⋅diag(F∗(x)⊙F(x)+λ)−1⋅FH⋅F⋅diag(F∗(x))⋅FH⋅y=F⋅diag(F∗(x)F∗(x)⊙F(x)+λ)⋅FH⋅y
<script type="math/tex; mode=display" id="MathJax-Element-17">\displaylines{ {\bf{w}} = {({{\bf{X}}^{\rm{H}}}{\bf{X}} + \lambda {\bf{I}})^{ - 1}}{{\bf{X}}^{\rm{H}}}{\bf{y}} \cr = {\left( {{\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}} + \lambda {\bf{I}}} \right)^{ - 1}} \cdot {\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}} \cdot {\bf{y}} \cr = {\left( {{\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{x}}) + \lambda } \right) \cdot {{\bf{F}}^{\rm{H}}}} \right)^{ - 1}} \cdot {\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}} \cdot {\bf{y}} \cr = {\bf{F}} \cdot diag{\left( {{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{x}}) + \lambda } \right)^{ - 1}} \cdot {{\bf{F}}^{\rm{H}}} \cdot {\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}} \cdot {\bf{y}} \cr = {\bf{F}} \cdot diag\left( {{{{{\cal F}^ * }({\bf{x}})} \over {{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{x}}) + \lambda }}} \right) \cdot {{\bf{F}}^{\rm{H}}} \cdot {\bf{y}} \cr} </script>
根据式(8)对将
w<script type="math/tex" id="MathJax-Element-18">\bf{w}</script>转换到频域得:
F(w)=(F∗(x)F∗(x)⊙F(x)+λ)∗⊙F(y)=F(x)⊙F(y)F(x)⊙F∗(x)+λ(9)
<script type="math/tex; mode=display" id="MathJax-Element-19">\displaylines{ {\cal F}({\bf{w}}) = {\left( {{{{{\cal F}^ * }({\bf{x}})} \over {{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{x}}) + \lambda }}} \right)^ * } \odot {\cal F}({\bf{y}}) \cr = {{{\cal F}({\bf{x}}) \odot {\cal F}({\bf{y}})} \over {{\cal F}({\bf{x}}) \odot {{\cal F}^ * }({\bf{x}}) + \lambda }} \cr}\tag{9} </script>
式(9)即为所求的线性岭回归的解,由于该解在频域空间,而且涉及到样本频谱的相关运算,故该算法通常又被称作“相关滤波”,该解被称作“相关滤波器”。可以看出,该解的求解过程巧妙的借用了DFT把时域内矩阵的乘法与求逆运算转换到频域,变成了矩阵元素之间的对位运算。时域内求解
w<script type="math/tex" id="MathJax-Element-20">{\bf{w}}</script>的时间复杂度为
O(N3)<script type="math/tex" id="MathJax-Element-21">O({N^3})</script>,当使用FFT时,该求解过程的时间复杂度则为
O(NlogN)<script type="math/tex" id="MathJax-Element-22">O(N\log N)</script>,在计算速度上有质的提升,而这也是相关滤波器能实现高速跟踪的核心所在。
核相关滤波
考虑使用核岭回归的情况,首先要构造核矩阵K<script type="math/tex" id="MathJax-Element-23">{\bf{K}}</script>,而且为了充分利用循环矩阵的性质实现快速计算,核矩阵K<script type="math/tex" id="MathJax-Element-24">{\bf{K}}</script>必须是循环矩阵。
根据核函数的定义:Kij=κ(xi,xj)=⟨φ(xi),φ(xj)⟩<script type="math/tex" id="MathJax-Element-25">{{\bf{K}}_{ij}} = \kappa ({{\bf{x}}_i},{{\bf{x}}_j}) = \left\langle {\varphi ({{\bf{x}}_i}),\varphi ({{\bf{x}}_j})} \right\rangle </script>,其中xi<script type="math/tex" id="MathJax-Element-26">{{\bf{x}}_i}</script>表示第i<script type="math/tex" id="MathJax-Element-27">i</script>个样本。在由一维样本x<script type="math/tex" id="MathJax-Element-28">{\bf{x}}</script>生成的循环矩阵X<script type="math/tex" id="MathJax-Element-29">{\bf{X}}</script>中,xi<script type="math/tex" id="MathJax-Element-30">{{\bf{x}}_i}</script>泛化为X<script type="math/tex" id="MathJax-Element-31">{\bf{X}}</script>的第i<script type="math/tex" id="MathJax-Element-32">i</script>行元素。则K<script type="math/tex" id="MathJax-Element-33">{\bf{K}}</script>的第i<script type="math/tex" id="MathJax-Element-34">i</script>行元素为:Ki=κ(xi,x)=⟨φ(xi),φ(x)⟩<script type="math/tex" id="MathJax-Element-35">{{\bf{K}}_i} = \kappa ({{\bf{x}}_i},{\bf{x}}) = \left\langle {\varphi ({{\bf{x}}_i}),\varphi ({\bf{x}})} \right\rangle </script>,即X<script type="math/tex" id="MathJax-Element-36">{\bf{X}}</script>的所有行元素与第i<script type="math/tex" id="MathJax-Element-37">i</script>行元素在由映射函数φ(⋅)<script type="math/tex" id="MathJax-Element-38">\varphi ( \cdot )</script>定义的希尔伯特空间中的内积。K<script type="math/tex" id="MathJax-Element-39">{\bf{K}}</script>的每一行元素都是遍历了X<script type="math/tex" id="MathJax-Element-40">{\bf{X}}</script>中的所有元素生成的,只是顺序有所不同,故核矩阵K<script type="math/tex" id="MathJax-Element-41">{\bf{K}}</script>必定是循环矩阵。
根据循环矩阵的性质,对式(3)进行简化:
α=(K+λI)−1y=(F⋅diag(F(kxx))⋅FH+λI)−1⋅y=F⋅diag(F(kxx)+λ)−1⋅FH⋅y
<script type="math/tex; mode=display" id="MathJax-Element-42">\displaylines{ {\bf{\alpha }} = {({\bf{K}} + \lambda {\bf{I}})^{ - 1}}{\bf{y}} \cr = {\left( {{\bf{F}} \cdot diag\left( {{\cal F}({{\bf{k}}^{{\bf{xx}}}})} \right) \cdot {{\bf{F}}^{\rm{H}}} + \lambda {\bf{I}}} \right)^{ - 1}} \cdot {\bf{y}} \cr = {\bf{F}} \cdot diag{\left( {{\cal F}({{\bf{k}}^{{\bf{xx}}}}) + \lambda } \right)^{ - 1}} \cdot {{\bf{F}}^{\rm{H}}} \cdot {\bf{y}} \cr} </script>
其中,
kxx<script type="math/tex" id="MathJax-Element-43">{{\bf{k}}^{{\bf{xx}}}}</script>表示由一维样本
x<script type="math/tex" id="MathJax-Element-44">{\bf{x}}</script>生成的自相关核向量,根据式(8),则有:
F(α)=(1F(kxx)+λ)∗⊙F(y)=F(y)F(kxx)+λ(10)
<script type="math/tex; mode=display" id="MathJax-Element-45">\displaylines{ {\cal F}({\bf{\alpha }}) = {\left( {{1 \over {{\cal F}({{\bf{k}}^{{\bf{xx}}}}) + \lambda }}} \right)^ * } \odot {\cal F}({\bf{y}}) \cr = {{{\cal F}({\bf{y}})} \over {{\cal F}({{\bf{k}}^{{\bf{xx}}}}) + \lambda }} \cr} \tag{10}</script>
常见的具有内积形式的核函数都可满足要求,如线性函数,多项式函数,径向基函数,其核向量的时域与频域表达式分别如下:
1.线性核函数
{kxz=κ(x,z)=xTzF(kxz)=F∗(x)⊙F(z)(11)
<script type="math/tex; mode=display" id="MathJax-Element-46">\left\{ {\matrix{ {{{\bf{k}}^{{\bf{xz}}}} = \kappa ({\bf{x}},{\bf{z}}) = {{\bf{x}}^{\rm{T}}}{\bf{z}}} \cr {{\cal F}({{\bf{k}}^{{\bf{xz}}}}) = {{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{z}})} \cr } } \right. \tag{11}</script>
其中,
z<script type="math/tex" id="MathJax-Element-47">{\bf{z}}</script>表示待检测样本,
x<script type="math/tex" id="MathJax-Element-48">{\bf{x}}</script>表示训练样本,
F∗(x)⊙F(z)<script type="math/tex" id="MathJax-Element-49">{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{z}})</script>项在信号处理领域称为互相关(cross-correlation),
kxz<script type="math/tex" id="MathJax-Element-50">{{\bf{k}}^{{\bf{xz}}}}</script>表示
x<script type="math/tex" id="MathJax-Element-51">{\bf{x}}</script>与
z<script type="math/tex" id="MathJax-Element-52">{\bf{z}}</script>的互相关核,一般在样本
z<script type="math/tex" id="MathJax-Element-53">{\bf{z}}</script>的检测阶段采用,而在样本的训练阶段,如式(10)所示,则取样本
x<script type="math/tex" id="MathJax-Element-54">{\bf{x}}</script>的自相关核,即
kxx<script type="math/tex" id="MathJax-Element-55">{{\bf{k}}^{{\bf{xx}}}}</script>形式。此处为避免样本的混淆,统一采用
kxz<script type="math/tex" id="MathJax-Element-56">{{\bf{k}}^{{\bf{xz}}}}</script>表示核向量。
2.多项式核函数
⎧⎩⎨kxz=κ(x,z)=(xTz+a)bF(kxz)=(F∗(x)⊙F(z)+a)b(12)
<script type="math/tex; mode=display" id="MathJax-Element-57">\left\{ {\matrix{ {{{\bf{k}}^{{\bf{xz}}}} = \kappa ({\bf{x}},{\bf{z}}) = {{\left( {{{\bf{x}}^{\rm{T}}}{\bf{z}} + a} \right)}^b}} \cr {{\cal F}({{\bf{k}}^{{\bf{xz}}}}) = {{\left( {{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{z}}) + a} \right)}^b}} \cr } } \right.\tag{12}</script>
3.径向基核函数
径向基核函数形式为kxz=κ(x,z)=h(∥x−z∥2)<script type="math/tex" id="MathJax-Element-58">{{\bf{k}}^{{\bf{xz}}}} = \kappa ({\bf{x}},{\bf{z}}) = h\left( {{{\left\| {{\bf{x}} - {\bf{z}}} \right\|}^2}} \right)</script>,通常使用高斯核函数代替
⎧⎩⎨⎪⎪⎪⎪⎪⎪kxz=κ(x,z)=exp(−1σ2(∥x∥2+∥z∥2−2xTz))F(kxz)=F(exp(−1σ2(∥x∥2+∥z∥2−2F−1(F∗(x)⊙F(z)))))(13)
<script type="math/tex; mode=display" id="MathJax-Element-59">\left\{ {\matrix{ {{{\bf{k}}^{{\bf{xz}}}} = \kappa ({\bf{x}},{\bf{z}}) = \exp \left( { - {1 \over {{\sigma ^2}}}\left( {{{\left\| {\bf{x}} \right\|}^2} + {{\left\| {\bf{z}} \right\|}^2} - 2{{\bf{x}}^T}{\bf{z}}} \right)} \right)} \cr {{\cal F}({{\bf{k}}^{{\bf{xz}}}}) = {\cal F}\left( {\exp \left( { - {1 \over {{\sigma ^2}}}\left( {{{\left\| {\bf{x}} \right\|}^2} + {{\left\| {\bf{z}} \right\|}^2} - 2{{\cal F}^{ - 1}}\left( {{{\cal F}^ * }({\bf{x}}) \odot {\cal F}({\bf{z}})} \right)} \right)} \right)} \right)} \cr } } \right.\tag{13}</script>
考虑使用线性核函数的情况,将其代入式(10)得:
F(α)=F(y)F(x)⊙F∗(x)+λ
<script type="math/tex; mode=display" id="MathJax-Element-60">{\cal F}({\bf{\alpha }}) = {{{\cal F}({\bf{y}})} \over {{\cal F}({\bf{x}}) \odot {{\cal F}^ * }({\bf{x}}) + \lambda }}</script>
由于
α<script type="math/tex" id="MathJax-Element-61">{\bf{\alpha }}</script>是
w<script type="math/tex" id="MathJax-Element-62">{\bf{w}}</script>在对偶空间的表示,二者存在以下关系:
w=∑i=1Nαiφ(xi)=∑i=1Nαixi=XTα
<script type="math/tex; mode=display" id="MathJax-Element-63">{\bf{w}} = \sum\limits_{i = 1}^N {{\alpha _i}\varphi ({{\bf{x}}_i})} = \sum\limits_{i = 1}^N {{\alpha _i}{{\bf{x}}_i}} = {{\bf{X}}^{\rm{T}}}{\bf{\alpha }}</script>
根据式(6)对
w<script type="math/tex" id="MathJax-Element-64">{\bf{w}}</script>展开得:
w=(F⋅diag(F(x))⋅FH)T⋅α=F⋅diag(F∗(x))⋅FH⋅α
<script type="math/tex; mode=display" id="MathJax-Element-65">\displaylines{ {\bf{w}} = {\left( {{\bf{F}} \cdot diag\left( {{\cal F}({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}}} \right)^{\rm{T}}} \cdot {\bf{\alpha }} \cr = {\bf{F}} \cdot diag\left( {{{\cal F}^ * }({\bf{x}})} \right) \cdot {{\bf{F}}^{\rm{H}}} \cdot {\bf{\alpha }} \cr} </script>
根据式(8)对将其转换到频域得:
F(w)=(F∗(x))∗⊙F(α)=F(x)⊙F(y)F(x)⊙F∗(x)+λ
<script type="math/tex; mode=display" id="MathJax-Element-66">\displaylines{ {\cal F}({\bf{w}}){\rm{ = }}{\left( {{{\cal F}^ * }({\bf{x}})} \right)^ * } \odot {\cal F}({\bf{\alpha }}) \cr = {{{\cal F}({\bf{x}}) \odot {\cal F}({\bf{y}})} \over {{\cal F}({\bf{x}}) \odot {{\cal F}^ * }({\bf{x}}) + \lambda }} \cr} </script>
与式(9)对比发现,当采用线性核函数时,该滤波器与常规的线性滤波器是完全等价的。由此说明,线性相关滤波是核相关滤波的一类特殊情况。在下文对相关滤波的论述中,统一采用核相关滤波的形式。
快速检测
在样本检测阶段,每个样本的回归值由下式唯一确定:
f(z)=(Kxz)Tα(14)
<script type="math/tex; mode=display" id="MathJax-Element-67">f({\bf{z}}) = {({{\bf{K}}^{{\bf{xz}}}})^{\rm{T}}}{\bf{\alpha }}\tag{14}</script>
其中,
α<script type="math/tex" id="MathJax-Element-68">{\bf{\alpha }}</script>为由
x<script type="math/tex" id="MathJax-Element-69">{\bf{x}}</script>的自相关核
kxx<script type="math/tex" id="MathJax-Element-70">{{\bf{k}}^{{\bf{xx}}}}</script>训练出来的在希尔伯特空间的分类面,
Kxz<script type="math/tex" id="MathJax-Element-71">{{\bf{K}}^{{\bf{xz}}}}</script>为由
x<script type="math/tex" id="MathJax-Element-72">{\bf{x}}</script>与
z<script type="math/tex" id="MathJax-Element-73">{\bf{z}}</script>的互相关核
kxz<script type="math/tex" id="MathJax-Element-74">{{\bf{k}}^{{\bf{xz}}}}</script>生成的循环矩阵。
f(z)<script type="math/tex" id="MathJax-Element-75">f({\bf{z}})</script>包含了基础样本每一个循环移位情况对应的相关值,该响应中最大值位置即为当前检测样本与训练样本最相似的位置。同样,为实现高速计算,将式(14)转换到频域空间,对其化简得:
f(z)=(F⋅diag(F(kxz))⋅FH)T⋅α=F⋅diag(F∗(kxz))⋅FH⋅α=F−1((F∗(kxz))∗⊙F(α))=F−1(F(kxz)⊙F(α))(15)
<script type="math/tex; mode=display" id="MathJax-Element-76">\displaylines{ f({\bf{z}}) = {\left( {{\bf{F}} \cdot diag\left( {{\cal F}({{\bf{k}}^{{\bf{xz}}}})} \right) \cdot {{\bf{F}}^{\rm{H}}}} \right)^{\rm{T}}} \cdot {\bf{\alpha }} \cr {\rm{ = }}{\bf{F}} \cdot diag\left( {{{\cal F}^ * }({{\bf{k}}^{{\bf{xz}}}})} \right) \cdot {{\bf{F}}^{\rm{H}}} \cdot {\bf{\alpha }} \cr = {{\cal F}^{ - 1}}\left( {{{\left( {{{\cal F}^ * }({{\bf{k}}^{{\bf{xz}}}})} \right)}^ * } \odot {\cal F}({\bf{\alpha }})} \right) \cr {\rm{ = }}{{\cal F}^{ - 1}}\left( {{\cal F}({{\bf{k}}^{{\bf{xz}}}}) \odot {\cal F}({\bf{\alpha }})} \right) \cr} \tag{15}</script>
式(15)即为所要求的快速检测表达式,可以看出,该式同样将矩阵的乘法运算转换成了矩阵元素的对位乘法运算,算法的时间复杂度由
O(n2)<script type="math/tex" id="MathJax-Element-77">O({n^2})</script>降为
O(nlogn)<script type="math/tex" id="MathJax-Element-78">O(n\log n)</script>。
相关滤波在二维样本上的推广
前文对相关滤波原理的研究与推导仅仅局限于一维样本的情况,而实际应用中,对图像样本进行回归分类尤为常见,故非常有必要将相关滤波算法推广到二维样本的情况。
对于图像,一维样本特指图像的一行像素,二维样本则指整个图像。对于长度为N的一维样本在行方向上的循环位移构成N×N的循环矩阵,其可视化形式如下图所示。
对于M×N的二维样本,其原本就是矩阵,需要在行和列两个方向上分别进行循环位移,其广义循环矩阵其实是M2×N2<script type="math/tex" id="MathJax-Element-289">M^2 \times N^2</script>的矩阵,其可视化形式如下图所示,
为方便宏观上观察,目标图像每次位移固定的像素数,图中(0,0)号示样表示原始样本。
然而,通过研究上文中一维样本的相关滤波原理,可以发现:虽然在原理的推导过程中,一维样本需要转化为循环矩阵,然而在该算法的最终原理公式中,如式(10)~(13)、(15)所示,并没有涉及该样本的循环矩阵形式,所有参与计算的变量仍然是样本的基础形态,此过程中起着重要作用的部分就是DFT。
DFT有两个重要性质分别是“周期性”与“平移性”,一维样本的循环位移相当于在时域内对样本进行了周期扩展与位移,由该样本生成的循环矩阵的每一行元素的频谱都具有完全一致的功率谱,而且该特性同样适用于二维样本,其表现形式如下图所示。

实际上,DFT本身就已经隐式的对样本进行了循环位移的操作。而FFT不仅大大降低了算法的时间复杂度,而且通过对原始样本的变换,使得相关滤波器在频域中包含了样本形态的“无限可能”,也使得相关滤波算法很容易的推广到二维样本。
此处仅选取式(10)、(13)、(15)这三个核心公式进行推广,其中为表述简洁方便,用上标(^)<script type="math/tex" id="MathJax-Element-290">{\rm{\hat() }}</script>表示该元素的傅立叶变换,如X^=F(X)<script type="math/tex" id="MathJax-Element-291">{\bf{\hat X}} = {\cal F}\left( {\bf{X}} \right)</script>。 式(10)可重新表示为
A^=Y^K^XX+λ(16)
<script type="math/tex; mode=display" id="MathJax-Element-292">{\bf{\hat A}} = {{{\bf{\hat Y}}} \over {{{{\bf{\hat K}}}^{{\bf{XX}}}} + \lambda }}\tag{16}</script>
其中,
A<script type="math/tex" id="MathJax-Element-293">{\bf{A}}</script>表示
α<script type="math/tex" id="MathJax-Element-294">{\bf{\alpha }}</script>的二维扩展,表现为矩阵的形式,实际应用中通常仅使用其频域形式
A^<script type="math/tex" id="MathJax-Element-295">{\bf{\hat A}}</script>,宏观上可以称之为“相关滤波器”;
Y<script type="math/tex" id="MathJax-Element-296">{\bf{Y}}</script>表示样本标签
y<script type="math/tex" id="MathJax-Element-297">{\bf{y}}</script>的二维扩展;
KXX<script type="math/tex" id="MathJax-Element-298">{{\bf{K}}^{{\bf{XX}}}}</script>表示训练样本的自相关核
kxx<script type="math/tex" id="MathJax-Element-299">{{\bf{k}}^{{\bf{xx}}}}</script>的二维扩展。
式(13)可重新表示为:
KXZ=exp(−1σ2(∥X∥2+∥Z∥2−2F−1(X^∗⊙Z^)))(17)
<script type="math/tex; mode=display" id="MathJax-Element-300">{{\bf{K}}^{{\bf{XZ}}}} = \exp \left( { - {1 \over {{\sigma ^2}}}\left( {{{\left\| {\bf{X}} \right\|}^2} + {{\left\| {\bf{Z}} \right\|}^2} - 2{{\cal F}^{ - 1}}\left( {{{{\bf{\hat X}}}^ * } \odot {\bf{\hat Z}}} \right)} \right)} \right)\tag{17}</script>
其中,
X<script type="math/tex" id="MathJax-Element-301">{\bf{X}}</script>表示训练样本矩阵,
X^∗<script type="math/tex" id="MathJax-Element-302">{{\bf{\hat X}}^ * }</script>表示训练样本矩阵经二维DFT后的结果矩阵的共轭,
Z<script type="math/tex" id="MathJax-Element-303">{\bf{Z}}</script>表示检测样本矩阵,
KXZ<script type="math/tex" id="MathJax-Element-304">{{\bf{K}}^{{\bf{XZ}}}}</script>表示训练样本与检测样本的互相关核矩阵。在训练阶段
Z<script type="math/tex" id="MathJax-Element-305">{\bf{Z}}</script>可以取为训练样本
X<script type="math/tex" id="MathJax-Element-306">{\bf{X}}</script>,求得
KXX<script type="math/tex" id="MathJax-Element-307">{{\bf{K}}^{{\bf{XX}}}}</script>表示训练样本的自相关核矩阵。
式(15)可重新表示为:
R=F−1(K^XZ⊙A^)(18)
<script type="math/tex; mode=display" id="MathJax-Element-308">{\bf{R}} = {{\cal F}^{ - 1}}\left( {{{{\bf{\hat K}}}^{{\bf{XZ}}}} \odot {\bf{\hat A}}} \right)\tag{18}</script>
其中,
R<script type="math/tex" id="MathJax-Element-309">{\bf{R}}</script>表示滤波响应矩阵,矩阵中最大值的位置即为当前样本中目标所在位置。以上三个公式是核相关滤波跟踪算法的核心所在。
基础理论部分到此为止,后续博文重点介绍该算法的实现
所有评论(0)