imhistmatch

Настройте гистограмму 2D изображения, чтобы совпадать с гистограммой ссылочного изображения

Описание

пример

J = imhistmatch(I,ref) преобразовывает 2D изображение полутонового или истинного цвета I возврат выходного изображения J чья гистограмма приблизительно совпадает с гистограммой ссылочного изображения ref.

  • Если оба I и ref изображения RGB истинного цвета, затем imhistmatch соответствия каждый цветовой канал I независимо к соответствующему цветовому каналу ref.

  • Если I изображение RGB истинного цвета и ref полутоновое изображение, затем imhistmatch соответствия каждый канал I против одной гистограммы, выведенной из ref.

  • Если I полутоновое изображение, затем ref должно также быть полутоновое изображение.

Изображения I и ref может быть любой из допустимых типов данных и не должен быть равным в размере.

пример

J = imhistmatch(I,ref,nbins) использование nbins равномерно распределенные интервалы в соответствующей области значений для данного типа данных image. Возвращенное изображение J имеет не больше, чем nbins дискретные уровни.

  • Если типом данных изображения является любой single или double, затем область значений гистограммы [0, 1].

  • Если типом данных изображения является uint8, затем область значений гистограммы [0, 255].

  • Если типом данных изображения является uint16, затем область значений гистограммы [0, 65535].

  • Если типом данных изображения является int16, затем область значений гистограммы [-32768, 32767].

пример

J = imhistmatch(___,Name,Value) пары "имя-значение" использования, чтобы изменить поведение алгоритма соответствия гистограммы.

пример

[J,hgram] = imhistmatch(___) возвращает гистограмму ссылочного изображения ref используемый в соответствии в hgram. hgram 1 nbins (когда ref шкала полутонов), или 3 nbins (когда ref истинный цвет), матрица, где nbins количество интервалов гистограммы. Каждая строка в hgram хранит гистограмму одного цветового канала ref.

Примеры

свернуть все

Эти воздушные изображения, взятые в разное время, представляют перекрывающиеся представления того же ландшафта в Конкорде, Массачусетс. Этот пример демонстрирует, что вход отображает A и Ref может иметь различные размеры и типы изображения.

Загрузите изображение RGB и ссылочное полутоновое изображение.

A = imread('concordaerial.png');
Ref = imread('concordorthophoto.png');

Получите размер A.

size(A)
ans = 1×3

        2036        3060           3

Получите размер Ref.

size(Ref)
ans = 1×2

        2215        2956

Обратите внимание на то, что отобразите A и Ref отличаются в размере и типе. Отобразите A изображение RGB истинного цвета, в то время как изображение Ref полутоновое изображение. Оба изображения имеют тип данных uint8.

Сгенерируйте соответствующее выходное изображение гистограммы. Пример совпадает с каждым каналом A против одной гистограммы Ref. Выходное изображение B берет характеристики изображения A - это - изображение RGB, размер которого и тип данных эквивалентны, отображают A. Количество отличных уровней, существующих в каждом канале RGB изображения B совпадает с количеством интервалов в гистограмме, созданной из полутонового изображения Ref. В этом примере, гистограмме Ref и B имейте количество по умолчанию интервалов, 64.

B = imhistmatch(A,Ref);

Отобразитесь RGB отображают A, ссылочное изображение Ref, и гистограмма совпадала с изображением RGB B. Изображения изменены перед отображением.

imshow(A)
title('RGB Image with Color Cast')

imshow(Ref)
title('Reference Grayscale Image')

imshow(B)
title('Histogram Matched RGB Image')

Считайте цветное изображение и ссылочное изображение. Чтобы продемонстрировать полиномиальный метод, присвойте ссылочное изображение, чтобы быть более темными из двух изображений.

I = imread('office_4.jpg');
ref = imread('office_2.jpg');
montage({I,ref})
title('Input Image (Left) vs Reference Image (Right)');

Используйте полиномиальный метод, чтобы настроить интенсивность изображения I так, чтобы это совпадало с гистограммой ссылочного изображения ref. Для сравнения также настройте интенсивность изображения I использование универсального метода.

J = imhistmatch(I,ref,'method','polynomial');
K = imhistmatch(I,ref,'method','uniform');
montage({J,K})
title('Histogram-Matched Image Using Polynomial Method (Left) vs Uniform Method (Right)');

Соответствующее гистограмме изображение с помощью универсального метода вводит фиктивные цвета в небе и дороге. Соответствующее гистограмме изображение с помощью полиномиального метода не показывает этот артефакт.

В этом примере вы будете видеть эффект на выходном изображении J из варьирования количества равномерно распределенных интервалов в целевой гистограмме изображения Ref, от его значения по умолчанию 64 к максимальному значению 256 для uint8 пиксельные данные.

Следующие изображения были взяты с цифровым фотоаппаратом и представляют два различных воздействия той же сцены.

    A   = imread('office_2.jpg');   % Dark Image
    Ref = imread('office_4.jpg');   % Reference image

Отобразите A, быть более темным изображением, имеет превосходство его пикселей в более низких интервалах. Ссылочное изображение, Ref, правильно отсоединенное изображение и полностью заполняет все доступные значения интервалов во всех трех каналах RGB: как показано в приведенной ниже таблице, все три канала имеют 256 уникальных уровней для 8-битных пиксельных значений.

Уникальные 8-битные значения уровня для красного канала 205 для A и 256 для Ref. Уникальные 8-битные значения уровня для зеленого канала 193 для A и 256 для Ref. Уникальные 8-битные значения уровня для синего канала 224 для A и 256 для Ref.

Пример генерирует выходное изображение B использование трех различных значений nbins: 64, 128 и 256. Цель функционального imhistmatch должен преобразовать отображают A таким образом, что гистограмма выходного изображения B соответствие к гистограмме Ref созданный с nbins равномерно распределенные интервалы. В результате nbins представляет верхний предел количества уровней дискретных данных, существующих в изображении B.

[B64,  hgram] = imhistmatch(A, Ref,  64);   
[B128, hgram] = imhistmatch(A, Ref, 128);
[B256, hgram] = imhistmatch(A, Ref, 256);

Количество уникальных 8-битных значений уровня для каждого выходного изображения описано в таблице. Обратите внимание на то, что как nbins увеличения, количество уровней в каждом канале RGB выходного изображения B также увеличения.

nbinsВыходное изображениеКоличество уникальных значений гистограммы
64B6457
128B128101
256B256134

В этом примере показано, как выполнить гистограмму, соответствующую с различными количествами интервалов.

Загрузите 16-битное изображение DICOM колена, отображенного через MRI.

K = dicomread('knee1.dcm');   % read in original 16-bit image
LevelsK = unique(K(:));       % determine number of unique code values
disp(['image K: ',num2str(length(LevelsK)),' distinct levels']);
image K: 448 distinct levels
disp(['max level = ' num2str( max(LevelsK) )]);
max level = 473
disp(['min level = ' num2str( min(LevelsK) )]);
min level = 0

Все 448 дискретных значений в низких кодовых обозначениях, который заставляет изображение выглядеть темным. Чтобы исправить это, масштабируйте данные изображения, чтобы породить целую 16-битную линейную оболочку столбцов [0, 65535].

Kdouble = double(K);                  % cast uint16 to double
kmult = 65535/(max(max(Kdouble(:)))); % full range multiplier
Ref = uint16(kmult*Kdouble);   % full range 16-bit reference image

Затемните ссылочное изображение Ref создать изображение A это может использоваться в операции соответствия гистограммы.

%Build concave bow-shaped curve for darkening |Ref|.
ramp = [0:65535]/65535;
ppconcave = spline([0 .1 .50  .72 .87 1],[0 .025 .25 .5 .75 1]);
Ybuf = ppval( ppconcave, ramp);
Lut16bit = uint16( round( 65535*Ybuf ) );
% Pass image |Ref| through a lookup table (LUT) to darken the image.
A = intlut(Ref,Lut16bit);

Просмотрите ссылочное изображение Ref и затемненное изображение A. Обратите внимание на то, что они имеют то же количество дискретных кодовых обозначений, но отличаются по полной яркости.

subplot(1,2,1)
imshow(Ref)
title('Ref: Reference Image')
subplot(1,2,2)
imshow(A)
title('A: Darkened Image');

Сгенерируйте соответствующие гистограмме выходные изображения с помощью гистограмм с различным количеством интервалов. Сначала используйте количество по умолчанию интервалов, 64. Затем используйте количество значений, существующих в изображении A, 448 интервалов.

B16bit64 = imhistmatch(A(:,:,1),Ref(:,:,1));  % default: 64 bins

N = length(LevelsK);     % number of unique 16-bit code values in image A.
B16bitUniq = imhistmatch(A(:,:,1),Ref(:,:,1),N);

Просмотрите результаты двух операций соответствия гистограммы.

figure
subplot(1,2,1)
imshow(B16bit64)
title('B16bit64: 64 bins')
subplot(1,2,2)
imshow(Ref)
title(['B16bitUniq: ',num2str(N),' bins'])

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

свернуть все

Введите изображение, которое будет преобразовано, задано как 2D истинный цвет или полутоновое изображение. Возвращенное изображение будет посещать урок типа данных входного изображения.

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

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

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

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

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: imhistmatch(I,ref,'Method','polynomial') совпадает с гистограммой изображения I к тому из ссылочного изображения ref использование метода отображения полинома.

Отображение метода раньше сопоставляло гистограмму ref отображать I, заданный как разделенная запятой пара, состоящая из 'Method' и одно из этих значений:

  • 'uniform' — Используйте основанную на гистограмме функцию интенсивности и эквализацию гистограммы.

  • 'polynomial' — Вычислите кубическую функцию отображения Многочлена Эрмита от совокупных гистограмм источника и ссылочных изображений. Полиномиальный метод полезен, когда ссылочное изображение является более темным, чем входное изображение. В этой ситуации полиномиальный метод дает более сглаженный цветовой переход, чем универсальный метод.

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

свернуть все

Выходное изображение, возвращенное как 2D истинный цвет или полутоновое изображение. Выходное изображение выведено из изображения I чья гистограмма является аппроксимированным соответствием к гистограмме входного изображения ref созданный с nbins равномерно распределенные интервалы. Отобразите J одного размера и тип данных как входное изображение I. Входной параметр nbins представляет верхний предел количества дискретных уровней, содержавшихся в изображении J.

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

Количества гистограммы вывели из ссылочного изображения ref, заданный как вектор или матрица. Когда ref изображение истинного цвета, hgram 3 nbins матрица. Когда ref полутоновое изображение, hgram 1 nbins вектор.

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

Алгоритмы

Цель imhistmatch должен преобразовать отображают I таким образом, что гистограмма изображения J совпадает с гистограммой, выведенной из изображения ref. Это состоит из nbins равномерно распределенные интервалы, которые охватывают полный спектр типа данных image. Последствием соответствия с гистограммами таким образом является тот nbins также представляет верхний предел количества уровней дискретных данных, существующих в изображении J.

Важный поведенческий аспект этого алгоритма, чтобы отметить то, что как nbins увеличения значения, степени быстрых колебаний между смежным заполненным peaks в гистограмме изображения J имеет тенденцию увеличиваться. Это видно в следующих графиках гистограммы, взятых из 16-битного полутонового примера MRI.

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

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

| | |

Представленный в R2012b