Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

การแมสก์ (Masking) รูปภาพใน OpenCV คืออะไร

ในการดำเนินการแมสก์ (mask operations) ค่าของแต่ละพิกเซลในภาพจะถูกคำนวณใหม่โดยอิงจากแมทริกซ์แมสก์ที่กำหนด เรียกว่า kernel การแมสก์ cònเรียกว่า filtering

เมธอด filter2D() ของคลาส Imgproc รับ source, destination และ kernel matrices และทำการคอนฟลูเวน (convolve) source matrix กับ kernel matrix โดยใช้เมธอดนี้คุณสามารถแมสก์หรือกรองภาพได้

ตัวอย่างโค้ด

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) {
        // โหลด OpenCV core library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // อ่านรูปภาพ input
        String file = "D://images//boy.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // สร้าง matrix ว่างสำหรับผลลัพธ์
        Mat dst = new Mat();
        
        // สร้าง kernel1
        Mat kernel1 = new Mat(3, 3, CvType.CV_8S);
        int row = 0, col = 0;
        kernel1.put(row, col, 0, -1, 0, -1, 5, -1, 0, -1, 0);
        
        // สร้าง kernel2
        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);
            }
        }
        
        // กรองภาพด้วย kernel1
        Imgproc.filter2D(src, dst, -1, kernel1);
        HighGui.imshow("Mask Example1", dst);
        dst = new Mat();
        
        // กรองภาพด้วย kernel2
        Imgproc.filter2D(src, dst, -1, kernel2);
        HighGui.imshow("Mask Example2", dst);
        HighGui.waitKey();
    }
}

รูปภาพ Input

การแมสก์ (Masking) รูปภาพใน OpenCV คืออะไร

ผลลัพธ์

เมื่อรันโปรแกรมจะสร้างหน้าต่างดังนี้:

Kernel1 − การแมสก์ (Masking) รูปภาพใน OpenCV คืออะไร

Kernel2 − การแมสก์ (Masking) รูปภาพใน OpenCV คืออะไร