Ошибка сравнения изображений ssim ''window_shape несовместима с arr_in.shape"

Я хочу использовать ssim для сравнения сходства двух изображений. Я получаю эту ошибку window_shape is incompatible with arr_in.shape . Почему? (Что это означает?)

from skimage.measure import structural_similarity as ssim
from skimage import io

img1 = io.imread('http://pasteio.com/m85cc2eed18c661bf8a0ea7e43779e742')
img2 = io.imread('http://pasteio.com/m1d45b9c70afdb576f1e3b33d342bf7d0')

ssim( img1, img2 )

Трассировка (последний последний вызов): Файл "", строка 1, в файле "/var/www/wt/local/lib/python2.7/site-packages/skimage/measure/_structural_similarity.py", строка 58, в структурное_подобие XW = view_as_windows(X, (win_size, win_size)) Файл "/var/www/wt/local/lib/python2.7/site-packages/skimage/util/shape.py", строка 221, в view_as_windows вызывает ValueError ("window_shape несовместим с arr_in.shape") ValueError: window_shape несовместим с arr_in.shape

Я получаю ту же ошибку, даже когда дважды загружаю один и тот же файл ssim(img1,img1)


person Alex    schedule 18.08.2015    source источник
comment
Пожалуйста, дайте ссылку на ваши тестовые изображения.   -  person Stefan van der Walt    schedule 19.08.2015
comment
@StefanvanderWalt обновлен. теперь включает URL-адрес изображения.   -  person Alex    schedule 19.08.2015
comment
Вы работаете с цветными изображениями, поэтому вам нужно ssim(img1, img2, multichannel=True)   -  person Stefan van der Walt    schedule 20.08.2015
comment
TypeError: structural_similarity() got an unexpected keyword argument 'multichannel', недоступно в текущей стабильной версии (0.11.3). Пытался установить версию для разработчиков, но не удалось из-за проблем с зависимостями   -  person Alex    schedule 20.08.2015
comment
Затем сначала преобразуйте изображения в серый цвет: from skimage import color; img1 = color.rgb2gray(img1) и т. д.   -  person Stefan van der Walt    schedule 21.08.2015
comment
bedankt. Кажется, это работает и достаточно хорошо для того, что я хочу сделать.   -  person Alex    schedule 22.08.2015


Ответы (1)


Вам нужно убедиться, что ваши изображения имеют одинаковый размер, чтобы сравнить их с ssim от scikit:

from skimage.measure import compare_ssim
from skimage.transform import resize
from scipy.ndimage import imread
import numpy as np

# resized image sizes
height = 2**10
width = 2**10

a = imread('a.jpg', flatten=True).astype(np.uint8)
b = imread('b.jpg', flatten=True).astype(np.uint8)
a = resize(a, (height, width))
b = resize(b, (height, width))

sim, diff = compare_ssim(a, b, full=True)
person duhaime    schedule 01.04.2018