Преобразование картинки 256 цв в 16
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [18.97.9.174] |
|
|
правила раздела Алгоритмы

Преобразование картинки 256 цв в 16
|
Сообщ.
#1
,
|
|
|
|
Помогите пжалуйста!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Мне нужен алгоритм замены цветов в 256 цветовой картинке на 16 основных цветов. По какому алгоритму их заменять. Напишите пожалуйста алгоритм поподробнее, а уж программу я попробую написать(мне нужно прогу написать на MatLab). Спасибо |
|
Сообщ.
#2
,
|
|||
|
|
Это сложнее чем ты думаешь. Для 16 стандартных цветов, приведу тебе таблицу цветности:
Тут хоть как-то по цифиркам видно где какой цвет. Например ArRGB16[0]- чёрный, ArRGB16[1]- бледный синий, ArRGB16[2]- бледный зелёный, ArRGB16[3]- бирюзовый и т.д. Для 256 цветов существует аналогичный массив, тока её размер уже не 64 байта, а 1024. Вытащить её можно из какого-нибудь 256цветного bmp файла. Но далее разбираться в ней и ставить в соответствие группе элементов из массива ArRGB256[], конкретный элемент массива ArRGB16 - такой геморрой. Мой тебе совет: не ломай голову и не трать зря время, люди уже решили эту проблему, так что найди готовый конвертер. |
|
Сообщ.
#3
,
|
|
|
|
Думал сегодня как облегчить твой скорбный труд.
Придумал. 1) Открываешь любой 256цветный БМП-файл каким-нибудь бинарным просмотрщиком, ну типа HIEW.EXE. Находишь там таблицу цветов. Если не знаешь как, подскажу. Аккуратно без ошибок переписываешь её на бумажку. Получаешь массив ArRGB256 состоящий из 256 элементов по 4 байта каждый. Каждый 4-й байт 0 - он нам не нужен. 2) Перегружаешь комп в режиме 16 цветов. 3) Заходиш в MS Paint. В главном меню выбираешь Палитра->Изменить палитру...-> Определить цвет. 4) Для каждого элемента (их 256 штук будет) заводишь свои значения в окошки "Красный", "Синий" и "Зелёный". Смотришь цвет в окне "Цвет|Заливка". Смотреть надо именно то, что отображается в Заливке. Фиксируешь название цвета на бумажке. 5) В конце концов ты получишь для каждого элемента ArRGB256 соответствующий ему цвет из 16 цветов. 6) Для массива ArRGB16 делаешь тоже самое. 7) Те элементы, которые совпали по цвету - и соответствуют друг другу. Вот тебе и таблица замены/преобразования. 8) Теперь при создании своего 16 цветного БМП файла пишешь в него ArRGB16 и каждый байт из битового массива 256цветного БМП-файла преобразуешь в полубайт битового массива 16цветного БМП-файла. Для этого используешь свою таблицу, которую ты получил на бумажке. Vot tak vot. Пару дней попотеешь! |
|
Сообщ.
#4
,
|
|
|
|
Смысл всех замен цвета ичешь ближайший в палитре
|
|
Сообщ.
#5
,
|
|
|
|
Верно. Ищешь максимально близкий к требуемому цвету цвет стандартной палитры. Правда, результат будет страшноват. Для более высокого качества нужно уже использовать дитеринг.
Вот тебе по поиску ближайшего цвета: http://www.enlight.ru/demo/faq/smth.phtml?query=alg_clr_near |
|
Сообщ.
#6
,
|
|
|
|
Я предлагаю, как минимум, 4 пикселя использовать вместо одного 256 цветного. Пробовал конвертировать программой в 16 цвета, так он делает 3 на 6 четырехугольник, комбинацией 16 цветов.
|
|
Сообщ.
#7
,
|
|
|
|
fair7
Главное, вовремя 8) |