次の関数を使用して、OpenCV を使用してヒストグラムの等化を実行しようとしています。
Mat Histogram::Equalization(const Mat& inputImage)
{
if(inputImage.channels() >= 3)
{
vector<Mat> channels;
split(inputImage,channels);
Mat B,G,R;
equalizeHist( channels[0], B );
equalizeHist( channels[1], G );
equalizeHist( channels[2], R );
vector<Mat> combined;
combined.push_back(B);
combined.push_back(G);
combined.push_back(R);
Mat result;
merge(combined,result);
return result;
}
return Mat();
}
しかし、結果を取得すると、入力画像と出力画像に違いがないように見えますが、何が間違っているのでしょうか?
画質が悪いのは残念ですが、「Preprocessed」(左) はヒストグラムを均等化したもので、入力 (右) と同じであることがわかります。
何が逃したのですか?