package org.hipi.tools.covar;
import org.hipi.opencv.OpenCVMatWritable;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.Reducer;
import org.bytedeco.javacpp.opencv_core;
import org.bytedeco.javacpp.opencv_core.Mat;
import org.bytedeco.javacpp.opencv_core.Scalar;
import java.io.IOException;
public class CovarianceReducer extends
Reducer<IntWritable, OpenCVMatWritable, NullWritable, OpenCVMatWritable> {
@Override
public void reduce(IntWritable key, Iterable<OpenCVMatWritable> values, Context context)
throws IOException, InterruptedException {
int N = Covariance.patchSize;
Mat cov = new Mat(N * N, N * N, opencv_core.CV_32FC1, new Scalar(0.0));
// Consolidate covariance matrices
for(OpenCVMatWritable value : values) {
opencv_core.add(value.getMat(), cov, cov);
}
context.write(NullWritable.get(), new OpenCVMatWritable(cov));
}
}