![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: нет Всего: 1 |
Общая задача такая: взять цвет пикселя и определить, к какому из 7 основных цветов он принадлежит, т.е. оттенком которого он является. Появилась идея найти длину волны цвета, а по ней уже определять основной цвет. Как это можно сделать и может быть есть какой-то другой более легкий способ?
-------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Это просто невозможно сделать - далеко не все цвета являются монохроматичными, т.е. описываются одной длиной волны. Проще, пожалуй, так. В RGB есть "выделенные" цвета: 0, 0, 0 - черный 255, 0, 0 - красный 0, 255, 0 - зеленый 0, 0, 255 - синий 255, 255, 0 - желтый 0, 255, 255 - голубой (вернее, "циановый") 255, 0, 255 - пурпурный 255, 255, 255 - белый Для RGB-координат пиксела можно определить какое-то расстояние (ну, например, банальный корень квадратный из суммы квадратов разностей координат), после чего посмотреть, к какому из "выделенных" цветов пиксел ближе. |
|||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 6 Всего: 27 |
а вы о цветовых моделях HSB и HLS слышали? Ключевая буква в этих моделях - H, обозначающая оттенок. Переведите RGB в HLS и вы получите оттенок. А дальше умножьте это значение на 7 и разделите на 240. Вот вам и цвет. Если надо точнее, задайте 7 значений цветов и ищите минимальное расстояние от полученого значения к заданным значениям.
|
|||
|
||||
x128 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 29.9.2009 Репутация: 5 Всего: 7 |
Как вариант, можно найти у максимального значения rgb позицию старшего установленного бита, проверить эту позицию в каждой компоненте и сложить результат:
Это решение точнее вычисления расстояния и проще перевода в другое цветовое пространство хоть и не такое точное. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |