複素領域乗算法則はx=a+bi,y=c+di(a,b,c,d∈R)が任意の2つの複素数であるとすると,それらの積(a+bi)(c+di)=(ac-bd)+(bc+ad)i.は実は2つの複素数を乗算し,2つの多項式を乗算するように展開し,ac+adi+bci+bdi^2,i^2=−1であるため,(ac−bd)+(bc+ad)iとなる.2つの複素数の積は依然として1つの複素数である. は画像に適用するA*B 1、符号A、Bはそれぞれ2枚の画像2、チャネル分離splitを表し、チャネル分離後、1番目の画像は実部、2番目は虚部3、上記式をに適用する.
付属コードcv::Mat complexDivision(cv::Mat a, cv::Mat b)
{
std::vector<:mat> pa;
std::vector<: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<: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;
}