Улучшите контраст с помощью коррекции гистограммы
J = histeq(I,hgram)J = histeq(I,n)[J,T] =
histeq(I)newmap = histeq(X,map)newmap = histeq(X,map,hgram)[newmap,T]
= histeq(X,___) преобразовывает полутоновое изображение J = histeq(I,n)I, возвращающийся в J полутоновое изображение с n дискретные уровни серого. Примерно равное количество пикселей сопоставлено с каждым из уровней n в J, так, чтобы гистограмма J была приблизительно плоской. Гистограмма J является более плоской, когда n намного меньше, чем количество дискретных уровней в I.
преобразовывает палитру, сопоставленную с индексируемым изображением newmap = histeq(X,map,hgram)X так, чтобы гистограмма серого компонента индексируемого изображения (X, newmap) приблизительно совпадала с целевой гистограммой hgram. Функция histeq возвращает преобразованную палитру в newmap. length(hgram) должен совпасть с size(map,1).
Этот синтаксис не поддержан на графическом процессоре.
Когда вы предоставляете желаемую гистограмму hgram, histeq выбирает полутоновое преобразование T, чтобы минимизировать
где c0 является совокупной гистограммой A, c1 является совокупной суммой hgram для всей интенсивности k. Эта минимизация подвергается ограничениям, что T должен быть монотонным, и c1 (T (a)) не может промахнуться по c0 (a) больше чем половиной расстояния между количествами гистограммы в a. histeq использует преобразование b = T (a), чтобы сопоставить уровни серого в X (или палитра) к их новым значениям.
Если вы не задаете hgram, то histeq создает плоский hgram,
hgram = ones(1,n)*prod(size(A))/n;
и затем применяет предыдущий алгоритм.