私はこのコードを持っています:
vector<Mat> brg;
Mat output;
split(inputImage, brg);
double mb=mean(brg[0])[0];
double mg=mean(brg[1])[0];
double mr=mean(brg[2])[0];
cout << "mb "<< mb<< " mg "<< mg<< " mr "<< mr << endl;
double max=MAX(mb,MAX(mg,mr));
mb=max/mb;
mg=max/mg;
mr=max/mr;
brg[0]=brg[0] *mb;
brg[1]=brg[1] *mg;
brg[2]=brg[2] *mr;
{
double mb=mean(brg[0])[0];
double mg=mean(brg[1])[0];
double mr=mean(brg[2])[0];
cout << "mb "<< mb<< " mg "<< mg<< " mr "<< mr << endl;
}
merge(brg,output);
return output;
数学的観点から、行列に数値を掛けると、その平均にその数値を掛ける必要があるため、この関数の最後に同じmb、mg、mrを取得する必要がありますが、取得していません。私が得ている結果は次のとおりです。
mb 166.891 mg 176.319 mr 158.288
mb 169.619 mg 176.319 mr 164.149
ご覧のとおり、平均は変化しましたが、等しくはありませんが、すべて最大値に等しいはずです。
これが得られない理由はありますか?
どうすれば修正できますか?