我一直在问有关矩阵的问题,并将它们分成块-但这显然不起作用,所以我采取了另一条路线。
假设在这个例子中我有一个 4x4 的矩阵(向量):
M1 =
0 1 0 1
1 1 1 0
0 0 0 1
0 1 1 1
M2 =
0 1
1 0
现在,我需要确定 M1 中的哪个块最适合 M2 中的块。所以基本上,在一个大矩阵中识别一个小矩阵。
我需要帮助的算法基本上是在矩阵 1 上滑动小矩阵,直到发现它最适合或匹配。(我正在使用相关性/相似性度量)
我一直认为它需要一次滑动一个像素/值。但是,显然我不想检查每个值的相关性。
这是将矩阵 1(在当前位置)与矩阵 2 进行比较的函数:
这是比较矩阵的函数:
bool compareMatrix(vector<double> &theMatrix1, vector<double> &theMatrix2, int
startRow, int startCol)
{
cout << theMatrix1[startRow*4+startCol]; // This prints out the particular block
}
现在我在想的是制作一个临时向量,它存储 matrix1 的值(在当前位置),然后将 matrix1 的值(在当前位置)推入临时向量,然后传递这个临时向量到相关函数,然后将返回一个值。
我的问题是:如何将“theMatrix1[startRow*4+startCol]”的内容推送到临时向量?
例如(这行不通):
vector<double> temp(2*2, 0);
temp.push_back(theMatrix1[startRow*4+startCol]);
double corr = correlation(temp, matrix2, 4, 4);
return corr;
我希望我已经解释得够多了(注意:这与以前的帖子不同)。
希望有人能帮忙,
谢谢 :)