Много изображений uint16, плавающих вокруг. Поэтому у меня может быть какой-то алгоритм, который сначала пытается наивно порождать, используя режим возможного диапазона данных, поэтому 128 с uint8. Затем я смогу подключить uint16-образ, для которого max - 65535, и алгоритм будет порождать все как передний план для его первого предположения. Глупый пример, но точка одна и та же. Нормализация часто является хорошей идеей.
Также исторические причины. Стив Eddins говорит о порогах в своем Mathworks блоге:
http://blogs.mathworks.com/steve/2016/05/09/image-binarization-im2bw-and-graythresh/
«На данный момент в ранней истории MATLAB, язык действительно был только один тип все в MATLAB был двойной точности матрицы Это сказывалось.. ранний функциональный дизайн двумя способами: во-первых, набор инструментов установил [0,1] в качестве обычного динамического диапазона для изображений с серой шкалой. На этот выбор повлияла математическая ориентация MATLAB, а также тот факт, байт на элемент данных. "
Также забавно:
«Опытные разработчики программного обеспечения будут удивлены комментарием кода выше,« Использовать по умолчанию на данный момент ». Это указывает на то, что разработчик хотел вернуться и сделать что-то еще перед отправкой, но так и не сделал. Во всяком случае, вы можете видеть, что УРОВЕНЬ 0,5 используется, если вы не укажете его сами ».
Если я не ошибаюсь, это просто, что цвета в Matlab представлены от 0 до 1, а не от 0 до 255. Таким образом, вся функция «image» хочет значения от 0 до 1. – mpaskov
@mpaskov Это зависит от: для «двойных» входов диапазон значений от 0 до 1. Как вы описали, но для 'uint8' (который часто используется для изображений), Функции Matlab требуют диапазона от 0 до 255. – hbaderts