histeq

Улучшите контраст с помощью эквализации гистограммы

Описание

пример

J = histeq(I) преобразовывает полутоновое изображение I так, чтобы гистограмма выходного полутонового изображения J имеет 64 интервала и является приблизительно плоским.

J = histeq(I,n) преобразовывает полутоновое изображение I так, чтобы гистограмма выходного полутонового изображения J с n интервалы являются приблизительно плоскими. Гистограмма J является более плоским когда n намного меньше, чем количество дискретных уровней в I.

J = histeq(I,hgram) преобразовывает полутоновое изображение I так, чтобы гистограмма выходного полутонового изображения J с length(hgram) интервалы приблизительно совпадают с целевой гистограммой hgram.

newmap = histeq(X,map) преобразовывает значения в палитру так, чтобы гистограмма серого компонента индексируемого изображения X является приблизительно плоским. Преобразованной палитрой является newmap.

newmap = histeq(X,map,hgram) преобразовывает палитру, сопоставленную с индексируемым изображением X так, чтобы гистограмма серого компонента индексируемого изображения (Xnewmap ) приблизительно совпадает с целевой гистограммой hgram. histeq функция возвращает преобразованную палитру в newmap. length(hgram) должен совпасть с size(map,1).

[___,T] = histeq(___) также возвращает преобразование T это сопоставляет серый компонент входного полутонового изображения или палитры к серому компоненту выходного полутонового изображения или палитры.

Примеры

свернуть все

Считайте изображение в рабочую область.

I = imread('tire.tif');

Улучшите контраст изображения интенсивности с помощью эквализации гистограммы.

J = histeq(I);

Отобразите оригинальное изображение и откорректированное изображение.

imshowpair(I,J,'montage')
axis off

Figure contains an axes object. The axes object contains an object of type image.

Отобразите гистограмму оригинального изображения.

figure
imhist(I,64)

Figure contains 2 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains 2 objects of type image, line.

Отобразите гистограмму обработанного изображения.

figure
imhist(J,64)

Figure contains 2 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains 2 objects of type image, line.

Загрузите 3-D набор данных.

load mristack

Выполните эквализацию гистограммы.

enhanced = histeq(mristack);

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

figure
subplot(1,2,1)
imshow(mristack(:,:,1))
title('Slice of Original Image')
subplot(1,2,2)
imshow(enhanced(:,:,1))
title('Slice of Enhanced Image')

Figure contains 2 axes objects. Axes object 1 with title Slice of Original Image contains an object of type image. Axes object 2 with title Slice of Enhanced Image contains an object of type image.

Входные параметры

свернуть все

Полутоновое изображение в виде числового массива любой размерности.

Типы данных: single | double | int16 | uint8 | uint16

Целевая гистограмма в виде числового вектора. hgram имеет равномерно распределенные интервалы со значениями интенсивности в соответствующей области значений:

  • [0, 1] для изображений класса double или single

  • [0, 255] для изображений класса uint8

  • [0, 65535] для изображений класса uint16

  • [-32768, 32767] для изображений класса int16

histeq автоматически шкалы hgram так, чтобы sum(hgram)=numel(I). Гистограмма J лучшие соответствия hgram когда length(hgram) намного меньше, чем количество дискретных уровней в I.

Типы данных: single | double

Количество дискретных уровней серого в виде положительного целого числа.

Типы данных: single | double

Индексируемое изображение в виде числового массива любой размерности. Значения в X индекс в палитру map.

Типы данных: single | double | uint8 | uint16

Палитра сопоставила с индексируемым изображением XВ виде c-by-3 числовая матрица со значениями в области значений [0, 1]. Каждой строкой является трехэлементный триплет RGB, который задает красные, зеленые, и синие компоненты одного цвета палитры.

Типы данных: double

Выходные аргументы

свернуть все

Преобразованное полутоновое изображение, возвращенное как числовой массив, одного размера и класс как входное изображение I.

Полутоновое преобразование, возвращенное как числовой вектор. Преобразование T уровни серого карт в изображении I к уровням серого в J.

Типы данных: double

Преобразованная палитра в виде n-by-3 числовая матрица со значениями в области значений [0, 1]. Каждой строкой является трехэлементный триплет RGB, который задает красные, зеленые, и синие компоненты одного цвета палитры.

Типы данных: double

Алгоритмы

Когда вы предоставляете желаемую гистограмму hgram, histeq выбирает полутоновое преобразование T минимизировать

|c1(T(k))c0(k)|,

c0 является совокупной гистограммой входного изображения I, и 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;

и затем применяет предыдущий алгоритм.

Расширенные возможности

Смотрите также

| | |

Представлено до R2006a