Trong các phép toán mask, giá trị mỗi pixel được tính lại dựa trên ma trận mask (kernel). Masking còn gọi là filtering (lọc).
Phương thức filter2D() của lớp Imgproc nhận ma trận nguồn, đích và kernel, thực hiện tích chập. Dùng phương thức này để mask/lọc hình ảnh.
Ví dụ minh họa
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class MaskingExample {
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
String file = "D://images//boy.jpg";
Mat src = Imgcodecs.imread(file);
Mat dst = new Mat();
// Kernel 1: Sharpening
Mat kernel1 = new Mat(3, 3, CvType.CV_8S);
kernel1.put(0, 0, 0, -1, 0, -1, 5, -1, 0, -1, 0);
// Kernel 2: Blur ( trung bình 2x2)
Mat kernel2 = Mat.ones(2, 2, CvType.CV_32F);
for (int i = 0; i < kernel2.rows(); i++) {
for (int j = 0; j < kernel2.cols(); j++) {
double[] m = kernel2.get(i, j);
for (int k = 1; k < m.length; k++) {
m[k] = m[k] / (2 * 2);
}
kernel2.put(i, j, m);
}
}
// Lọc với kernel1
Imgproc.filter2D(src, dst, -1, kernel1);
HighGui.imshow("Mask Example1", dst);
dst = new Mat();
// Lọc với kernel2
Imgproc.filter2D(src, dst, -1, kernel2);
HighGui.imshow("Mask Example2", dst);
HighGui.waitKey();
}
}
Hình ảnh đầu vào và kết quả
Input: 
Kernel1 (Sharpen): 
Kernel2 (Blur): 