Можно дополнительно указать диапазон входных значений и выходных значений с помощью 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 функция. ( imadjust функции использует stretchlim за свой простейший синтаксис, imadjust(I).)
Эта функция вычисляет гистограмму изображения и автоматически определяет пределы корректировки. 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 для получения дополнительной информации.