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

Top Hat และ Black Hat Morphological Operations ใน Java

Morphological operations คือชุดการดำเนินการที่ประมวลผลภาพตามรูปร่างที่กำหนด

  • Erosion (การกัด蚀) - การดำเนินการที่พิกเซลถูกลบออกจากขอบเขตภาพ
  • Dilation (การขยาย) - การดำเนินการที่พิกเซลถูกเพิ่มเข้าไปที่ขอบเขตภาพ
  • จำนวนพิกเซลที่เพิ่ม/ลบ ขึ้นอยู่กับมิติของ structuring element ที่ใช้
  • Morphological Opening - ใช้ erosion ก่อน แล้วตามด้วย dilation ใช้กำจัดวัตถุเล็กๆ จาก foreground
  • Morphological Closing - ใช้ dilation ก่อน แล้วตามด้วย erosion ใช้กำจัดรูเล็กๆ บนภาพ

Morphological Top Hat คือความต่างระหว่างภาพต้นฉบับกับ opening ของมัน

ตัวอย่าง Top Hat

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 TopHatExample {
    public static void main(String[] args) {
        // โหลด OpenCV core library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // อ่านข้อมูลภาพ
        String file = "D:\\Images\\morph_input1.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // สร้าง destination matrix
        Mat dst = new Mat(src.rows(), src.cols(), src.type());
        
        // เตรียม kernel matrix
        Mat kernel = Mat.ones(5, 5, CvType.CV_32F);
        
        // ใช้ morphologyEx แบบ TOPHAT
        Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
        
        // แสดงภาพ
        HighGui.imshow("Top Hat", dst);
        HighGui.waitKey();
    }
}

รูปภาพ Input

Top Hat และ Black Hat Morphological Operations ใน Java

ผลลัพธ์ Top Hat

Top Hat และ Black Hat Morphological Operations ใน Java

Morphological Black Hat คือความต่างระหว่าง closing กับภาพต้นฉบับ

ตัวอย่าง Black Hat

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 BlackHatExample {
    public static void main(String[] args) {
        // โหลด OpenCV core library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // อ่านข้อมูลภาพ
        String file = "D:\\Images\\morph_input1.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // สร้าง destination matrix
        Mat dst = new Mat(src.rows(), src.cols(), src.type());
        
        // เตรียม kernel matrix
        Mat kernel = Mat.ones(5, 5, CvType.CV_32F);
        
        // ใช้ morphologyEx แบบ BLACKHAT
        Imgproc.morphologyEx(src, dst, Imgproc.MORPH_BLACKHAT, kernel);
        
        // แสดงภาพ
        HighGui.imshow("Black Hat", dst);
        HighGui.waitKey();
    }
}

รูปภาพ Input

Top Hat และ Black Hat Morphological Operations ใน Java

ผลลัพธ์ Black Hat

Top Hat และ Black Hat Morphological Operations ใน Java