Сравните различные изображения, хранящиеся в словаре

{1: [52896, 34525, 13422, 18945, 55787],
 3: [66831, 32906, 44984, 18537, 51682],
 6: [49239, 53087, 59521, 3221, 11184],
 7: [6628, 30861, 15325, 64671, 51520],
 0: [47524, 12454, 42290, 5301, 16277],
 4: [48736, 6874, 49780, 25624, 25399],
 2: [16923, 30581, 42236, 6380, 9681]}

Это словарь с изображениями классов 1,3,6,7,0,4 и 2. Элементы списка в каждом ключе представляют индекс изображения в массиве с именем x_data, который является массивом изображений.

Я пытаюсь найти структурное сходство между изображением в одном классе, а также изображениями из других классов.

((Например, сравнение изображения класса 1, индекс 52896 с изображением класса 1, индекс 18945, а также сравнение с классом 3, индексом 66831 и т. д.))

И я хочу сделать это для каждого изображения

Для структурного сходства я подумал использовать:

from skimage.metrics import structural_similarity as ssim

Но как выполнить акробатику Python для утверждения, выделенного жирным шрифтом. Пожалуйста помоги.

Итак, в основном вы хотите найти структурное сходство изображения с любым другим изображением?

DollarAkshay 22.03.2022 07:29

Кроме того, все ли изображения в массиве изображений имеют одинаковую форму? Можете ли вы опубликовать информацию о форме.

DollarAkshay 22.03.2022 07:31

Да, конечно. Форма каждого изображения (64,64,3)

trunksabhi - 22.03.2022 13:04

можете ли вы опубликовать небольшой пример желаемого формата вывода

DollarAkshay 22.03.2022 13:06

Идентификатор изображения класса 1 52896, идентификатор изображения класса 1 34525, SSIM ....... Аналогично, идентификатор изображения класса 1 52896, идентификатор изображения класса 3 66831, SSIM ..... просто простые утверждения

trunksabhi - 22.03.2022 13:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
5
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны перебирать каждый класс, и в каждом классе вам придется перебирать каждый идентификатор. Теперь, поскольку вы хотите сравнить это с любым другим изображением, вам придется повторить это еще раз.

for c1 in img_classes:
    for i1 in img_classes[c1]:
        for c2 in img_classes:
            for i2 in img_classes[c2]:
                # Compare image i1 of class c1 with image i2 of class c2
                val = ssim(images[i1], images[i2], multichannel=True)
                print(f"Comparing image {i1:5d} of class {c1} with image {i2:5d} of class {c2} || SSIM :{val:.4f}")

Выход

Comparing image 47524 of class 0 with image 47524 of class 0 || SSIM :1.0000
Comparing image 47524 of class 0 with image 12454 of class 0 || SSIM :0.0111
Comparing image 47524 of class 0 with image 42290 of class 0 || SSIM :0.0431
Comparing image 47524 of class 0 with image  5301 of class 0 || SSIM :0.0237
Comparing image 47524 of class 0 with image 16277 of class 0 || SSIM :0.0302
Comparing image 47524 of class 0 with image 52896 of class 1 || SSIM :0.0179
Comparing image 47524 of class 0 with image 34525 of class 1 || SSIM :0.0316
Comparing image 47524 of class 0 with image 13422 of class 1 || SSIM :0.0217
Comparing image 47524 of class 0 with image 18945 of class 1 || SSIM :0.0186
Comparing image 47524 of class 0 with image 55787 of class 1 || SSIM :0.0180
Comparing image 47524 of class 0 with image 16923 of class 2 || SSIM :0.0123
Comparing image 47524 of class 0 with image 30581 of class 2 || SSIM :0.0165
Comparing image 47524 of class 0 with image 42236 of class 2 || SSIM :0.0122
Comparing image 47524 of class 0 with image  6380 of class 2 || SSIM :0.0400
Comparing image 47524 of class 0 with image  9681 of class 2 || SSIM :0.0173
Comparing image 47524 of class 0 with image 66831 of class 3 || SSIM :0.0180
Comparing image 47524 of class 0 with image 32906 of class 3 || SSIM :0.0178
Comparing image 47524 of class 0 with image 44984 of class 3 || SSIM :0.0121
Comparing image 47524 of class 0 with image 18537 of class 3 || SSIM :0.0112
Comparing image 47524 of class 0 with image 51682 of class 3 || SSIM :0.0208

Другие вопросы по теме