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

Сопоставление с гистограммой

В этой демонстрации показана функция сопоставления с гистограммой.

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

Здесь показано сопоставление с гистограммой для изображения RGB. Однако его можно применять и к изображениям в оттенках серого. Сопоставление с гистограммой можно использовать для нормализации двух изображений, полученных при одинаковом локальном освещении (например, в тени) в одном и том же месте, но с помощью разных датчиков, при разных атмосферных условиях или разном глобальном освещении.

using ImageContrastAdjustment
using Images
using Plots
using TestImages

Загрузим примеры изображений: одно исходное и одно опорное.

Для загрузки этих двух тестовых изображений необходимо использовать julia >= v"1.3.0" и TestImages >= v"1.3.1".

img_source = testimage("chelsea");
img_reference = testimage("coffee");

Применим сопоставление с гистограммой к исходному изображению с использованием опорного изображения. Здесь используется функция adjust_histogram из пакета ImageContrastAdjustment.jl. Она возвращает сопоставленное с гистограммой изображение с детальностью (числом столбцов) nbins. Первый аргумент img — это изображение, которое необходимо сопоставить, а второй аргумент targetimg — это изображение, с гистограммой которого должно производиться сопоставление.

img_transformed = adjust_histogram(img_source, Matching(targetimg = img_reference))
mosaicview(img_source, img_reference, img_transformed; nrow = 1)
iahswnm

Чтобы продемонстрировать эффект сопоставления с гистограммой, построим гистограмму для каждого канала RGB.

hist_final = [histogram(vec(c.(img)))
    for c in (red, green, blue)
    for img in [img_source, img_reference, img_transformed]
]

plot(
    hist_final...,
    layout = (3, 3),
    size = (800, 800),
    legend = false,
    title = ["Source" "Reference" "Histograms Matched"],
    reuse = false,
)

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

Из графиков видно, что изображение img_transformed гораздо больше похоже на img_target, чем img_source.

Благодарности и лицензия

Эта демонстрация основана на версии scikit-image. Она должна использоваться строго с соблюдением условий лицензии scikit-image.


Эта страница была создана с помощью DemoCards.jl и Literate.jl.