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

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

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

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

using Images
using TestImages
# Загрузка тестового изображения
img = float.(testimage("cameraman"))
# поверните изображение на 4 градуса
img_r = imrotate(img, -pi/45, axes(img))

interactive-scripts/images/image_processing_Image_overlay/4dfbd624f8d3e23892ace269da818fdd5a44b67d

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

mosaicview(img, img_r; nrow=1, npad=20, fillvalue=colorant"white")

interactive-scripts/images/image_processing_Image_overlay/9f03e47b7626aec74dc17cb0d35e157d59f35f7d

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

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

RGB_diffview = colorview(RGB, channelview(img), channelview(img_r), fill(0., size(img)))
Gray_diffview = Gray.(RGB_diffview)

interactive-scripts/images/image_processing_Image_overlay/9edffdb54ccd1ab321e30602c90f5e66d026b3ed

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

plain_diffview = @. img - img_r

interactive-scripts/images/image_processing_Image_overlay/3b66cb2fd81b5576763c87eaeae32d790f07d8ef

mosaicview(plain_diffview, RGB_diffview;
           nrow=1, npad=20, fillvalue=colorant"white")

interactive-scripts/images/image_processing_Image_overlay/fbc358131de5c8c32da8b90f27ccd7d6845fdbe8

Вывод

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