Сопоставление с гистограммой
В этой демонстрации показана функция сопоставления с гистограммой.
Целью сопоставления с гистограммой является преобразование уровней интенсивности на исходном изображении таким образом, чтобы они распределялись в соответствии с гистограммой указанного целевого изображения.
Здесь показано сопоставление с гистограммой для изображения RGB. Однако его можно применять и к изображениям в оттенках серого. Сопоставление с гистограммой можно использовать для нормализации двух изображений, полученных при одинаковом локальном освещении (например, в тени) в одном и том же месте, но с помощью разных датчиков, при разных атмосферных условиях или разном глобальном освещении.
using ImageContrastAdjustment
using Images
using Plots
using TestImages
Загрузим примеры изображений: одно исходное и одно опорное.
Для загрузки этих двух тестовых изображений необходимо использовать |
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)
Чтобы продемонстрировать эффект сопоставления с гистограммой, построим гистограмму для каждого канала 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.