Можно опционально задать область значений значений входа и выхода значений с помощью imadjust
. Вы задаете эти области значений в двух векторах, в которые передаете imadjust
как аргументы. Первый вектор задает значения низкой и высокой интенсивности, которые вы хотите сопоставить. Второй вектор задает шкалу, по которой вы хотите их сопоставить.
Примечание
Необходимо задать интенсивность как значения от 0 до 1 независимо от класса I
. Если I
является uint8
, значения, которые вы поставляете, умножаются на 255, чтобы определить фактические значения для использования; если I
является uint16
значения умножаются на 65535. Чтобы узнать об альтернативном способе автоматического задания этих пределов, смотрите раздел «Автоматическое задание пределов корректировки интенсивности изображения».
В этом примере показано, как задать пределы корректировки контаста как область значений с помощью imadjust
функция. Этот пример уменьшает контрастность изображения путем сужения области значений данных.
Чтение изображения в рабочую область.
I = imread('cameraman.tif');
Настройте контрастность изображения, задав область значений значений, используемых в выходном изображении. В приведенном ниже примере шерсть мужчины слишком темная, чтобы обнаружить какие-либо детали. imadjust
отображает область значений [0,51]
в uint8
входное изображение в [128,255]
в выходном изображении. Это значительно осветляет изображение, а также расширяет динамическую область значений тёмных фрагментов оригинального изображения, значительно облегчая просмотр деталей в покрытии. Обратите внимание, однако, что, поскольку все значения выше 51 в оригинальное изображение отображены на 255 (белый) в скорректированном изображении, скорректированное изображение появляется размытым.
J = imadjust(I,[0 0.2],[0.5 1]);
Отобразите оригинальное изображение и скорректированное на контраст изображение.
imshowpair(I,J,'montage')
Для более удобного способа определения пределов используйте stretchlim
функция. (The imadjust
функция использует stretchlim
для простейшего синтаксиса, imadjust(I)
.)
Эта функция вычисляет гистограмму изображения и определяет пределы корректировки автоматически. The stretchlim
функция возвращает эти значения в виде дробей в векторе, который можно передать как [low_in high_in]
аргумент в imadjust
; для примера:
I = imread('rice.png'); J = imadjust(I,stretchlim(I),[0 1]);
По умолчанию stretchlim
использует значения интенсивности, которые представляют нижние 1% (0,01) и верхние 1% (0,99) области значений в качестве пределов корректировки. Обрезая крайности на обоих концах области значений интенсивности, stretchlim
делает больше места в скорректированной динамической области значений для остальных интенсивностей. Но можно задать другие пределы области значений в качестве аргумента к stretchlim
. См. stretchlim
Страница с описанием для получения дополнительной информации.