public static ImageCV filter(Mat source, KernelData kernel) { Objects.requireNonNull(kernel); Mat srcImg = Objects.requireNonNull(source); Mat k = new Mat(kernel.getHeight(), kernel.getWidth(), CvType.CV_32F); k.put(0, 0, kernel.getData()); ImageCV dstImg = new ImageCV(); Imgproc.filter2D(srcImg, dstImg, -1, k); // TODO improve speed with dedicated call // Imgproc.blur(srcImg, dstImg, new Size(3,3)); return dstImg; }