Документация Engee
Notebook

Просмотр разницы изображений

Открыть пример в Engee

В этой демонстрации показан распространенный пример сравнения изображений через просмотр различий за счёт наложения.

Здесь для изменения изображения используется функция imshowpair для поворота изображения.

In [ ]:
using Images
using TestImages
In [ ]:
# Загрузка тестового изображения
img = float.(testimage("cameraman"))
# поверните изображение на 4 градуса
img_r = imrotate(img, -pi/45, axes(img))
Out[0]:
No description has been provided for this image

Функция mosaicview позволяет отобразить несколько изображений. Этот метод особенно полезен, когда у изображений разные размеры и цвета.

In [ ]:
mosaicview(img, img_r; nrow=1, npad=20, fillvalue=colorant"white")
Out[0]:
No description has been provided for this image

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

Серые изображения в таком случае можно заполнить разными каналами RGB, создать представление RGB и после этого преобразовать в изображение в оттенках серого.

In [ ]:
RGB_diffview = colorview(RGB, channelview(img), channelview(img_r), fill(0., size(img)))
Gray_diffview = Gray.(RGB_diffview)
Out[0]:
No description has been provided for this image

Также два изображения можно сравнить через расчёт их разницы.

In [ ]:
plain_diffview = @. img - img_r
Out[0]:
No description has been provided for this image
In [ ]:
mosaicview(plain_diffview, RGB_diffview;
           nrow=1, npad=20, fillvalue=colorant"white")
Out[0]:
No description has been provided for this image

Вывод

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