Есть несколько причин.
Мы действительно предпочитаем диапазоны, содержащие всего 256 значений. В таком случае мы можем хранить данные в байте. Мы можем использовать два байта, но таким образом мы удвоим использование памяти. Или просто использовать более 8 бит, но поэтому мы должны выполнять битовую операцию над каждым пикселем, прежде чем делать что-то интересное, что очень неэффективно. Примечание: с двумя байтами мы можем использовать половинные числа с плавающей запятой, которые очень полезны в некоторых случаях, но точки с плавающей запятой также неэффективны при различных вычислениях (но это вы делаете фильтры и композицию слоев).
Вторая причина указана в ссылке, которую вы включили в вопрос, но может потребоваться дополнительная информация: во многих форматах (особенно для видео или телевидения) у нас есть ограниченный диапазон (не от 0 до 255, а от 16 до 235 или 16 до 240). Причин несколько: аналоговый сигнал может иметь больше черного, чем черного (что может быть невозможно), и больше белого, чем белого (реалистично). Мы только что откалибровали телевизор, чтобы определить белые и черные точки (и, возможно, вещатель будет отфильтровывать точки ниже черного. Это было полезно по некоторым причинам (преобразование аналоговых данных, и мы часто видим больше белого, чем белого). С цифровизацией телевидению понадобились аналого-цифровые преобразователи (и обратное).Эти преобразователи стоят (и больше бит: больше затрат), и мы уже использовали данные за пределами видимого цветового диапазона (в аналоговом сигнале) по другим причинам, вне цветов.Так что вместо этого чтобы иметь различное преобразование в зависимости от типа данных (или просто больше битов на преобразователе), мы просто сохраняем ограниченный диапазон).
Для каждой операции с цветом следует проверять диапазон (и определение цветового пространства). Квантование также может быть проблемой (многие профессиональные программы используют плавающие точки, поэтому мы менее ограничены в диапазоне (но есть и другие причины для плавающих точек, например, точность и эффективность при работе в линейном пространстве [без гамма-коррекции]). Примечание: вы должны заботиться только о значении отношения к максимальному значению.Углы имеют различные измерения: 360 градусов, 400 градусов или 2 Пи (самые распространенные, когда-то, особенно в прошлом, вы можете записать их в виде десятичной степени (или других факторов, например, 3600, 36000 или 21600 [градусные минуты]). Пользовательские интерфейсы могут просто отображать другое соглашение (более удобное для пользователей).
И чтобы сделать все более сложным, преобразование HSL не так точно, если вам нужны точные H, S и L (в более строгом определении), просто быстрый ярлык.
person
Giacomo Catenazzi
schedule
21.07.2021