两幅图像的图像比较

时间:2016-06-28 12:47:17

标签: javascript java image image-processing

我想比较两个图像文件的某些平等标准。

是否有可用的工具可以比较两个图像文件达到一定百分比? 如果我们传递2张图像,它应该能够通过大约'x'%

来判断图像是否匹配

1 个答案:

答案 0 :(得分:2)

这可能不是您正在寻找的,但实际上写出用于图像处理和分析的代码非常有用。这是在Java中:

//Image percentage match
public float getPercentMatch(String imageFile1, String imageFile2) {

//Set how close a pixel has to be for a match, pixel deviation
int pd = 3;

  try {
     //get height, width and image from first file
     File input1 = new File(imageFile1);
     image1 = ImageIO.read(input1);
     width1 = image1.getWidth();
     height1 = image1.getHeight();

     //Do the same for the second one
     File input2 = new File(imageFile2);
     image2 = ImageIO.read(input2);
     width2 = image2.getWidth();
     height2 = image2.getHeight();

     int matchCount = 0;

     //Make sure they're the same height.  You could also choose to use the 
     //smaller picture for dimensions
     if (height1 != height2 || width1 != width2) {return 0.0;}


     //Iterate over each pixel
     for(int i=0; i<height1; i++){

        for(int j=0; j<width1; j++){

           //Get RGB values for each image at certain pixel
           Color c1 = new Color(image1.getRGB(j, i));
           Color c2 = new Color(image2.getRGB(j, i));

           // If the colors are close enough based on deviation value...
           if (   (Math.abs(c1.getRed() - c2.getRed()) < pd ) &&
                  (Math.abs(c1.getGreen() - c2.getGreen()) < pd ) &&
                  (Math.abs(c1.getBlue() - c2.getBlue() ) < pd ) ) {
               //...it's a match, so increment the match count
               matchCount++;
           }
        }
     }
     return matchCount / (height1 * width1);

  } catch (Exception e) {}
}