【发布时间】:2014-10-30 09:03:09
【问题描述】:
我想对两个矩阵进行边缘化以获得第三个矩阵。 基本上,我有两个大小为 (4x1) 的 Mat 对象,我希望将它们边缘化以获得行标准化的第三个 4 x 4 矩阵。这是通过获取第一个 Mat 对象的第一行并与第二个 Mat 对象的每一行相乘以填充第三个 4x4 Mat 的第一行,每个行元素乘法除以该行的总和来完成,如下图所示.还有here。 找到下面我到目前为止所采取的编码步骤并得到了一些堆栈......
const int nStates = 9;
register int iii, jjj;
float mMatrix[nStates][3] = {1,2,3,4,5,6,7,8,9};
//Pixelwise transitions
Mat nPot1 = Mat(nStates, 1, CV_32FC1,mMatrix );
Mat nPot2 = Mat(nStates, 1, CV_32FC1,mMatrix );
Mat NodeTransitions(nStates, nStates, CV_32FC1); NodeTransitions.setTo(Scalar(1.0f));
float fN1;
for( iii = 0; iii < nStates; iii++){
float * pPot1 = nPot1.ptr<float>(iii);
float * pPot2 = nPot2.ptr<float>(iii);
float * pNodeTrans = NodeTransitions.ptr<float>(iii);
//nPot1.at<float>(iii,0);
//nPot2.at<float>(iii,0);
float sum = 0;
for (int i =0; i < nStates; i++){
fN1 = pPot1[i]*pPot2[iii];
cout << fN1 << "\t";
}
for(jjj = 0; jjj < nStates; jjj++){
//pNodeTrans[jjj] = fN1;
}
//cout << endl;
}
谢谢。
【问题讨论】: