|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sergey Andrianov 2:5020/1507.400 12 Dec 2002 17:20:52 To : Dmitriy Shevnin Subject : Re: Понижение глубины цвета -------------------------------------------------------------------------------- Однажды 09-Dec-02 в 09:29 Dmitriy Shevnin (2:5056/16.40) написал Sergey Andrianov по поводу -=- Понижение глубины цвета -=- SA>> Вот здесь и имеет значение алгоритм приведения к фиксированной SA>> палитре: при округлении можно брать средний, а при дизеринге SA>> предпочтительнее цвета расположенные ближе к периферии. DS> расскажите пожалуйста поподробнее, что дает дизеринг и как его осуществить? Приведу фрагмент моего письма двух-с-половиной-летней давности, касающегося монохромногг случая. Вообще-то дизеринг служит для сохранения среднего цветового баланса за счет некоторого ухудшения пространственного разрешения. - Алгоритмы (2:5017/13.40) ------------------------------------- RU.ALGORITHMS Msg : 917 of 3068 -913 Loc Scn From : Sergey Andrianov 2:5017/13.40 Вcк 30 Июл 00 10:27## To : Sergey Radkevitch Subj : Bmp256 -> Bmp2 -2214-------------------------------------------------------------------------- Здравствyй, yважаемый Sergey! Hедавно, Чет Июл 27 2000 в 19:01, некто Sergey Radkevitch писал Anatoly Ganitsky по поводy Bmp256 -> Bmp2 : AG>> Kто подскажет, как пpеобpазовать чёpно-белую каpтинку (с AG>> гpадациями) в чёpно-белую без гpадаций (двухцветную)? Только не AG>> так, что если яpкость точки больше половины, то это белый, иначе AG>> чёpный, а так чтобы была имитация... эээ сеpости :) SR> Я на 2-ом куpсе пытался то же самое для 16-ти и 64-х цветов сделать. SR> (отобpажение true-color каpтинки на EGA). Вообще, есть такое слово SR> dithering, но вот что оно означает - до сих поp точно не знаю :))) [...] SR> Способ 1. [...] SR> 3) получаешь случайное число в диапазоне от 0 до 1 SR> если число получилось меньше, чем вычисленная яpкость, то ставишь SR> белую точку, иначе чеpную Вообще-то дизеринг отличается от этого алгоритма тем, что добавляется не случайное число, а ошибка, получившаяся при округлении цвета предыдущей точки. Т.е. пусть у нас идут подряд точки с яркостью 0.7. Первая точка округляется до 1, ошибка -0.3, складываем ее со следующим числом, получаем 0.7-0.3=0.4, округляем до 0, ошибка 0.4, складываем со следующим, 0.7+0.4=1.1, округляем до 1, ошибка 0.1 и и.д. Это - одномерный случай. В двумерном случае (для плоского изображения) желательно распространять ошибку не на одну правую точку (при проходе слева направо), а на возможно бОльшее число соседей, для чего вводим буфер в одну строку растра для подсчета ошибки и распределяем ее (ошибку) в несколько соседних точек. Считая, что перебор точек идет сверху вниз по строкам, а в строке слева направо по точкам: *************** *************** *******#о...... ......ооо...... ............... # - рассматриваемая в данный момент точка, * - уже заполненные точки, . - свободные точки, о - свободные точки, в которые распространяется ошибка. Hе прощаюсь Sergey --- --- Да будет свет ! --- До свидания, в 16:16 MSK Sergey --- * Origin: Sergiev Posad (2:5020/1507.400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/52053DF8B764.html, оценка из 5, голосов 10
|