使用均方误差matlab从矩阵中提取唯一块

时间:2015-05-08 15:33:41

标签: matlab

Mean Square Error(MSE)是一种用于定义两个块之间差异的方法,可以按如下方式计算:ab两个块大小相等

MSE = sqrt(sum(sum((a-b).^2)))/size(a or b)

如果MSE小于给定的阈值,则两个块没有差别。

给定矩阵A,已经重新整形为包含所有相同原始的块, 目的是提取MSE小于给定阈值的所有块(基于第一个块),然后返回这些块的平均值。再次,提取MSE小于给定阈值的第二组块,其中必须不再提取已经分配为其他块组的一部分的块。更好的是,必须删除它以减少搜索时间。依此类推,直到矩阵A的所有块都被指定为组的一部分。结果矩阵的块应该根据组内块的数量进行组织,从最大块数到最低块数。这是一个例子:

给定矩阵AA的大小为2乘14:

A= [1 1  2 2  9 9  4 4  6 6  5 5  3 3 
    1 1  2 2  9 9  4 4  6 6  5 5  3 3];

PS:没有必要这些块包含相同的数字,只是为了使示例清晰。

块大小为:2乘2

阈值为2

现在我们从矩阵MSE中的第一个块开始提取A小于阈值的所有块。这些块是:

1 1  2 2  3 3
1 1  2 2  3 3

这些街区的平均值是

  Result= [ 2 2
            2 2];

一次。我们提取MSE小于阈值的所有块,但是我们需要避免已经提取的块,所以第二组块是:

9 9
9 9

这个区块的意思是它自己,所以:

Result= [2 2  9 9
         2 2  9 9];

一次。我们提取MSE小于阈值的所有块,但是我们需要避免已经提取的块,所以第三组块是:

    4 4  6 6  5 5  
    4 4  6 6  5 5

3 3 
3 3
即使MSE小于阈值,

也不属于该群组,因为已经将其提取为第一组的一部分。

这些街区的意思是:

5 5
5 5

因此结果应为:

Result= [2 2  5 5 9 9 
         2 2  5 5 9 9 ];

有什么快速的方法可以申请吗? PS:Datasize是巨大的,因此,需要一种快速的方法来做到这一点。

0 个答案:

没有答案