1

在使用 SSIM + Python 比较各种图像时,我发现一些非常相似的图像具有非常低的 SSIM 比率。这是图像背景与执行计算必须进行的调整大小相互作用的结果。这个问题很重要,因为我正在比较数千张图像,并且许多不同的图像具有更高的相似比,而那些图像几乎是形态学相等的。

荚 SSIM 比率 = 0.2724580796

衬衫 SSIM 比率 = 0.3111611817

我的代码:

import cv2
import statistics
import numpy as np
from PIL import Image
import urllib.request
import matplotlib.pyplot as plt
from skimage.metrics import structural_similarity

class CompareImages_n():

    def __init__(self, url_1, url_2):
        self.img_url_1 = url_1
        self.img_url_2 = url_2

    def load_images(self, img_url, flag_color=False):
        req = urllib.request.urlopen(img_url)
        arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
        image = cv2.imdecode(arr, -1) # Load image as it is
        if not flag_color:
            return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Change color to greyscale
        else:
            return image

    def main_process_ssmi(self):
        ima1 = self.load_images(self.img_url_1)
        ima2 = self.load_images(self.img_url_2)
        (H, W) = ima1.shape
        ima2 = cv2.resize(ima2, (W, H))
        (score, diff) = structural_similarity(ima1, ima2, full=True)
        return score

如何在调整大小过程之前比较消除背景的图像?还有什么其他的解决方案可以实施?(自动裁剪?)有可用的库吗?

4

0 回答 0