Сравнивая различные изображения с SSIM + Python, я обнаружил, что некоторые очень похожие изображения имеют очень низкое соотношение SSIM. Это является следствием взаимодействия фона изображений с изменением размера, которое необходимо выполнить для выполнения расчетов. Эта проблема важна, потому что я сравниваю тысячи изображений, и многие разнородные изображения имеют более высокое сходство rat ios, чем те, которые почти равны по морфологии.
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
Как я могу сравнить изображения, устраняющие фон, до процесса изменения размера? Какое еще решение может быть реализовано? (Автоматическая обрезка?) Есть ли библиотека?