【发布时间】:2013-03-29 05:06:09
【问题描述】:
我在做复数矩阵的逆时遇到了麻烦。据我所知,复矩阵只是一个两通道矩阵(CV_32FC2 / CV_64FC2)。
假设我有一个矩阵 C:
Mat C(2, 2, CV_64FC2);
C.at<Vec2d>(0,0)[0] = 1;
C.at<Vec2d>(0,0)[1] = 1;
C.at<Vec2d>(0,1)[0] = 3;
C.at<Vec2d>(0,1)[1] = 4;
C.at<Vec2d>(1,0)[0] = 2;
C.at<Vec2d>(1,0)[1] = -1;
C.at<Vec2d>(1,1)[0] = 5;
C.at<Vec2d>(1,1)[1] = 2;
Mat InverseMat;
invert(C, InverseMat, DECOMP_SVD);
执行反转功能后,我不断收到此错误:
OpenCV 错误:反转中的断言失败(类型 == CV_32F || 类型 == CV_64F)
反转功能适用于灰度加载图像(1 通道),但我很难对包含实部和虚部的复杂矩阵进行反转。
谁能告诉我如何解决复矩阵的逆问题?最好使用 DECOMP_SVD 方法,因为当我尝试使用单通道图像时,我无法使用 DECOMP_LU 或 DECOMP_CHOLESKY 方法获得所需的结果,这可能是因为奇异矩阵的问题。谢谢。
【问题讨论】:
标签: c++ opencv complex-numbers matrix-inverse