複雑な行列の絶対値を得る方法についてお手伝いしてください。行列には実際の値と別の1つのchannel.pleaseの虚数値が含まれています可能であれば は私にいくつかの例を与えます。opencvの複素数の絶対値を計算するには
事前に感謝 Arangarajan
複雑な行列の絶対値を得る方法についてお手伝いしてください。行列には実際の値と別の1つのchannel.pleaseの虚数値が含まれています可能であれば は私にいくつかの例を与えます。opencvの複素数の絶対値を計算するには
事前に感謝 Arangarajan
のは、あなたが2つのコンポーネントがあるとしましょう:XとY、同じサイズ、同じ型の2つの行列を。あなたの場合は、それは実数/実数の値にすることができます。
// n rows, m cols, type float; we assume the following matrices are filled
cv::Mat X(n,m,CV_32F);
cv::Mat Y(n,m,CV_32F);
あなたはこのような各複素数の絶対値を計算することができます。
// create a new matrix for storage
cv::Mat A(n,m,CV_32F,cv::Scalar(0.0));
for(int i=0;i<n;i++){
// pointer to row(i) values
const float* rowi_x = X.ptr<float>(i);
const float* rowi_y = Y.ptr<float>(i);
float* rowi_a = A.ptr<float>(i);
for(int j=0;j<=m;j++){
rowi_a[j] = sqrt(rowi_x[j]*rowi_x[j]+rowi_y[j]*rowi_y[j]);
}
}
あなたがOpenCVのphasecorr.cppモジュールに見れば、すでにこれを実行し、処理するmagSpectrumsと呼ばれる機能がありますが共役対称詰めDFTの結果にもなります。私はそれがヘッダーファイルによって公開されているとは思わないが、コピーするのは簡単だ。速度が気になる場合は、この計算で大きな違いが生じる可能性があるため、有効なSIMDオプションをオンにしてコンパイルしてください。
*絶対値を意味するのか* magnitude *を意味しますか? –