Последний бин «выстреливает», потому что imadjust
ограничивает диапазон пикселей.
Команда: J = imadjust(im_gray,[0 0.5], [0.3 0.5]);
:
Принимает все значения выше 0.5
(выше 128
) im_gray
и заменяет их на 0.5
(значение 128
в uint8
спектр).
imadjust документация немного неясна:
J = imadjust (I, [low_in high_in], [low_out high_out]) отображает значения интенсивности в I в новые значения в J такие, что значения между low_in и high_in отображаются на значения между low_out и high_out.
Не сказано, что происходит со значениями вне диапазона [low_in high_in]
.
Вы можете понять это из предыдущего предложения:
J = imadjust (I, [low_in high_in]) отображает значения интенсивности в I на новые значения в J, так что значения между low_in и high_in соответствуют значениям от 0 до 1.
- Все значения ниже
low_in
отображаются на low_out
. - Все значения выше
high_in
отображаются на high_out
.
Все значения im_gray
выше 0,5 (выше 128) отображаются на 0,5 в J
.
Поскольку im_gray
имеет много пикселей выше 128, J
имеет много пикселей, которые равно 128.
Центральная ячейка гистограммы насчитывает около половины всех пикселей.
Вы можете использовать sum(J(:) == 128)
для проверки.