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

Вопрос или проблема

1
показать вниз
избранное

Например, я пытаюсь найти схожесть между двумя изображениями, используя skimage – SSIM. Код будет выглядеть следующим образом

from skimage.measure import compare_ssim as ssim
from skimage import io
from skimage.transform import resize

a = io.imread("http://ecx.images-amazon.com/images/I/51PV4Dd8wAL._AC_UL246_SR190,246_.jpg", as_grey=False, dtype="float64")
b = io.imread("http://ecx.images-amazon.com/images/I/914ZHE6JolL._UY500_.jpg", as_grey=False, dtype="float64")

a = resize(a, b.shape)
ssim(a, b, multichannel=True)

Я получил оценку схожести следующим образом

0.21009350738786017

Хотя оба изображения одинаковы, одно из которых немного ориентировано, я получаю очень низкие оценки для этих сравнений. Я упускаю какие-либо шаги предварительной обработки перед тем, как сравнить изображения? Если да, то что мне следует учитывать перед сравнением изображений.

Спасибо заранее !!

Нет никакой ошибки! Это одна из подводных камней SSIM. Он очень чувствителен к геометрическим деградациям, таким как ориентация!

Ответ или решение

Сравнение изображений — это важная задача в области компьютерного зрения, и правильная предварительная обработка является ключевым этапом для достижения надежных результатов. В данном случае, когда вы используете структурное сходство (SSIM) для оценки подобия между двумя изображениями, необходимо учитывать несколько шагов предварительной обработки, чтобы минимизировать влияние геометрических и других искажений.

1. Подгонка размера изображений

Первым шагом, который вы уже начали, является изменение размера одного из изображений, чтобы они имели одинаковые размеры. Однако нужно обратить внимание на то, что не только размеры, но и соотношение сторон должно быть учтено при ресайзе. Вы можете использовать метод, который сохраняет пропорции изображений, чтобы избежать искажений при изменении размера.

2. Конвертация в оттенки серого

Если изображения имеют разные цветовые пространства, их следует привести к единому. Серый цвет часто используется для упрощения анализа, так как он снижает уровень сложности, исключая цветовые артефакты. Например, можно использовать:

from skimage.color import rgb2gray

a = rgb2gray(a)
b = rgb2gray(b)

3. Нормализация яркости и контрастности

Изображения могут иметь разные уровни яркости и контрастности, что также влияет на окончательный результат вычисления SSIM. Вы можете использовать метод гистограммного выравнивания или нормализации для устранения этого несоответствия:

from skimage import exposure

a = exposure.equalize_hist(a)
b = exposure.equalize_hist(b)

Это поможет улучшить визуальное сходство между изображениями.

4. Применение фильтров

Для уменьшения шума и улучшения качества изображений, перед сравнением может быть полезно применить гауссовское размытие или другие фильтры:

from skimage.filters import gaussian

a = gaussian(a, sigma=1)
b = gaussian(b, sigma=1)

5. Устранение поворотов и трансформаций

Поскольку вы заметили, что одно изображение слегка ориентировано, вам может понадобиться использовать алгоритмы распознавания ключевых точек (например, ORB, SIFT или SURF) для нахождения и выравнивания этих ключевых особенностей перед сравнением. Для этого вы можете сделать следующее:

  1. Найти ключевые точки и дескрипторы для обоих изображений.
  2. Сопоставить их с помощью метода, такого как FLANN или BFMatcher.
  3. Применить преобразование (например, аффинное), чтобы выровнять одно изображение относительно другого.

6. Искажения и резкость

Перед сравнением можно также дополнительно обработать изображения, чтобы повысить резкость и выделить важные детали. Это может быть полезно, если изображения содержат размытости.

Заключение

Каждый из этих шагов может значительно улучшить результаты подобия, когда вы будете вычислять SSIM. Не забывайте, что предварительная обработка изображений — это итеративный процесс: вам может потребоваться несколько раз протестировать разные настройки.

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

Оцените материал
Добавить комментарий

Капча загружается...