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

วิธีเปรียบเทียบภาพสองภาพด้วย Java OpenCV

วิธีเปรียบเทียบภาพสองภาพโดยคำนวณความแตกต่างของค่า RGB ทีละพิกเซล:

  1. อ่านภาพทั้งสองด้วย ImageIO.read()
  2. ตรวจสอบขนาดภาพให้เท่ากัน
  3. ดึงค่า RGB ของแต่ละพิกเซล
  4. คำนวณผลรวมความแตกต่างของ R, G, B
  5. คำนวณเปอร์เซ็นต์ความแตกต่าง

สูตร: Average = diff / (width × height × 3) | Percentage = (Average / 255) × 100

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

import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;

public class CompareImages {
    public static void main(String[] args) throws Exception {
        BufferedImage img1 = ImageIO.read(new File("D:\\Images\\test1.jpg"));
        BufferedImage img2 = ImageIO.read(new File("D:\\Images\\test2.jpg"));
        
        int w1 = img1.getWidth(), w2 = img2.getWidth();
        int h1 = img1.getHeight(), h2 = img2.getHeight();
        
        if (w1 != w2 || h1 != h2) {
            System.out.println("ภาพทั้งสองต้องมีขนาดเท่ากัน");
            return;
        }
        
        long diff = 0;
        for (int y = 0; y < h1; y++) {
            for (int x = 0; x < w1; x++) {
                Color c1 = new Color(img1.getRGB(x, y), true);
                Color c2 = new Color(img2.getRGB(x, y), true);
                
                diff += Math.abs(c1.getRed() - c2.getRed())
                      + Math.abs(c1.getGreen() - c2.getGreen())
                      + Math.abs(c1.getBlue() - c2.getBlue());
            }
        }
        
        double avg = diff / (w1 * h1 * 3.0);
        double percent = (avg / 255) * 100;
        System.out.println("Difference: " + percent + "%");
    }
}

ผลลัพธ์

Difference: 92.54901960784314%