-
复数域乘法法则
设 x=a+bi,y=c+di (a、b、c、d∈R)是任意两个复数,那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i.
其实就是把两个复数相乘,类似两个多项式相乘,展开得: ac+adi+bci+bdi^2,
由i^2=-1,所以结果是(ac-bd)+(bc+ad)i 。两个复数的积仍然是一个复数。 -
应用在图像中 A * B
1、符号A,B分别代表两张图像
2、通道分离split,通道分离后,第一个图像是实部,第二个是虚部
3、将上述公式套用 -
附代码
cv::Mat complexDivision(cv::Mat a, cv::Mat b)
{
std::vector<cv::Mat> pa;
std::vector<cv::Mat> pb;
cv::split(a, pa);
cv::split(b, pb);
cv::Mat divisor = 1. / (pb[0].mul(pb[0]) + pb[1].mul(pb[1]));
std::vector<cv::Mat> pres;
pres.push_back((pa[0].mul(pb[0]) + pa[1].mul(pb[1])).mul(divisor));
pres.push_back((pa[1].mul(pb[0]) + pa[0].mul(pb[1])).mul(divisor));
cv::Mat res;
cv::merge(pres, res);
return res;
}