|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sergey Andrianov 2:5017/13.40 09 Aug 2001 20:25:59 To : Alex Astafiev Subject : 24bit -> 256 color -------------------------------------------------------------------------------- Hедавно, Втp Июл 10 2001 в 15:10, некто Alex Astafiev писал Sergey Andrianov по поводy 24bit -> 256 color : AA> [] AM>>> вывести на экран в видеомоде с палитрой в 256 цветов. Или AM>>> сконвертить в файл с палитрой. Гголову ломал долго, так и не AM>>> придумал как, чтобы быстро работало. SA>> Чтобы быстро - как раз элементарно. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^(1) SA>> 1. Устанавливаешь палитру, которая... впрочем, думаю, из SA>> дальнейшего уже очевидно, как ее строить. SA>> 2. Из зеленого цвета берешь три старших бита и записываешь их SA>> в биты D7-D5. 3. Из красного берешь три старших бита и SA>> записываешь их в D4-D2. 4. Из синего - два в D1-D0. 5. SA>> Записываешь байт в текущую точку на экране. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^(2) SA>> А вот чтобы SA>> _качественно_, тут следует и репу почесать, только заведомо, что SA>> быстро не получится. ^^^^^^^^^^^^^^^^^^^^^^^^(3) AA> [] AA> Выполнять pattern dithering тоже не сильно долго. ;) AA> Суть в том что у тебя есть таблица из 0..64 паттернов. Паттерн - блок AA> 8x8 точек. Когда ты выполняешь trunc цвета (как это описано сверху), AA> то старшие биты aka уходят в цвет, а младшие биты aka используешь как AA> индекс паттерна. Т.е. паттерн от 0..64 дает тебе как бы дополнительные AA> уровни яркости для смешения цвета. Реально таблица петтернов занимает AA> 8*65 байт. AA> {обьяснение несколько сумбурное, но, надеюсь, понятно о чем я} AA> Паттерны эти лучше всего спросить в ZX.SPECTRUM у любого демомейкера, AA> кто chunks на спектруме делал. Они в последнее время только это и AA> делают :)))) Либо сидеть с Softice над Windows... Pattern dithering имеет преимущество, если необходимо реализовать PutPixel, т.к. цвет определенной точки не зависит от окружающих. Hо, естественно, это ценой значительного уходшения качества, как с точки зрения цветопередачи, так и пространственного разрешения. Поэтому при обрабтке изображения полностью (а не рисовании по точкам) все преимущества на стороне описанного выше алгоритма. По скорости он также не сильно отличается от patern dithering. AA> Что касаемо скорости - суди сам, Sinclair ZX Spectrum делает это в AA> real-time. Windows это тоже делает в realtime, если экран физически AA> 256 цветов. У меня (1) и (2) относятся к одному и тому же - быстрому выводу. А для качественного нужен подбор палитры. И, думаю, львиную долю времени займет именно формирование палитры, а не сам dithering. Хотя и сам dithering по оптимизированной палитре будет осуществляться порядка на два медленнее, чем по синтетической из-за необходимости просматривать всю палитру для каждой точки. Hе прощаюсь Sergey --- --- Да будет свет ! --- * Origin: Sergiev Posad <Ferma> Sergey Andrianov (2:5017/13.40) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/32743b72f5d7.html, оценка из 5, голосов 10
|