Распознавание изображений: как устранить фон перед выполнением SSIM - PullRequest
0 голосов
/ 22 апреля 2020

Сравнивая различные изображения с SSIM + Python, я обнаружил, что некоторые очень похожие изображения имеют очень низкое соотношение SSIM. Это является следствием взаимодействия фона изображений с изменением размера, которое необходимо выполнить для выполнения расчетов. Эта проблема важна, потому что я сравниваю тысячи изображений, и многие разнородные изображения имеют более высокое сходство rat ios, чем те, которые почти равны по морфологии.

pod SSIM коэффициент = 0,2724580796

shirt 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

Как я могу сравнить изображения, устраняющие фон, до процесса изменения размера? Какое еще решение может быть реализовано? (Автоматическая обрезка?) Есть ли библиотека?

...