我正在尝试在MATLAB中以逐块方式执行图像的异常检测。
对于图像中的每个色块,我提取一个6x1
特征向量g
,其中每个分量都是一个指标。
我必须使用由以下代码段定义的置信区域cr
(我无法发布图像),并在正常补丁的所有特征向量上构建并使用它来测试新补丁。 / p>
<a href="https://www.codecogs.com/eqnedit.php?latex=\dpi{100}&space;\mathcal{R}_{\gamma}=\lbrace\phi\in\mathbb{R}^6:&space;\sqrt{(\phi&space;-&space;\overline{\bf{g}})'\Sigma^{-1}(\phi-\overline{\bf{g}})}\leq\gamma\rbrace&space;\\\\&space;\text{where&space;$\overline{\bf{g}},$\Sigma$&space;are&space;the&space;average&space;and&space;the&space;sample&space;covariance&space;of&space;g}" target="_blank"><img src="https://latex.codecogs.com/gif.latex?\dpi{100}&space;\mathcal{R}_{\gamma}=\lbrace\phi\in\mathbb{R}^6:&space;\sqrt{(\phi&space;-&space;\overline{\bf{g}})'\Sigma^{-1}(\phi-\overline{\bf{g}})}\leq\gamma\rbrace&space;\\\\&space;\text{where&space;$\overline{\bf{g}},$\Sigma$&space;are&space;the&space;average&space;and&space;the&space;sample&space;covariance&space;of&space;g}" title="\mathcal{R}_{\gamma}=\lbrace\phi\in\mathbb{R}^6: \sqrt{(\phi - \overline{\bf{g}})'\Sigma^{-1}(\phi-\overline{\bf{g}})}\leq\gamma\rbrace \\\\ \text{where $\overline{\bf{g}},$\Sigma$ are the average and the sample covariance of g}" /></a>
非正式地,我想检查测试特征向量是否落在置信区域内,因此将补丁标记为normal
,否则标记为anomalous
。
我正努力了解如何使用MATLAB在R6中建立置信区域。我尝试使用bootci,但是这样做cr
变成了2x6x6
矩阵,而且我不了解第三维的含义。任何帮助或建议,不胜感激!
谢谢。
答案 0 :(得分:0)
如果只想对6维向量φ进行分类,只需在代码段中应用公式即可。假设sigmaInv
是样本协方差的倒数,并且φ和 g_bar 是列向量,即size(phi) = size(g_bar) = (6,1)
那么
s = (phi-g_bar)'*sigmaInv*(phi-g_bar) % note the ' after the first () = transpose
是标量,sqrt(s) <= gamma
表示正常,反之则表示异常。 (取平方根假设样本协方差是正定的)。
如果phi
和g_bar
是行向量,则公式应在第二个括号之后具有转置:
s = (phi-g_bar)*sigmaInv*(phi-g_bar)' % apostrophe now after second ()
希望这会有所帮助