我正在尝试编写一个使用 OpenCV3.1 执行彩色图像直方图匹配的 Android 应用程序。我在C++中找到了这个代码示例,并将其转换为java。我尝试分别匹配每个 RGB 通道,但它没有给我想要的结果。所以现在我将图像转换为 YUV 颜色空间,然后匹配 Y 通道。我希望实现的是亮度匹配,因此如果光源比目标更亮,我会得到更暗的图像。
到目前为止,最终(输出)图像的 Y 直方图似乎有点接近目标图像的 Y 直方图,但实际输出看起来并不像目标。
这是相关代码:
private Mat calculateLUT(Mat in_cdf_mat, Mat dst_cdf_mat) {
int last = 0;
double epsilon = Double.parseDouble(epsilonTextView.getText().toString());// epsilon set to 0.01
Mat M = new Mat(256, 1,CvType.CV_8UC1);
for(int j=0; j<in_cdf_mat.rows(); j++) {
double F1j = in_cdf_mat.get(j,0)[0];
for(int k = last; k < dst_cdf_mat.rows(); k++) {
double F2k = dst_cdf_mat.get(k,0)[0];
if(Math.abs(F2k - F1j) < epsilon || F2k > F1j) {
double[] data = {k} …Run Code Online (Sandbox Code Playgroud)