реклама на сайте
подробности

 
 
> Цветная картинка на монохромном принтере, Цвет в плотность точек
Petrovich
сообщение Sep 20 2012, 06:38
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 2-06-05
Из: Днепропетровск
Пользователь №: 5 658



Господа!
Нужно на монохромном термопринтере печатать исходно цветную картинку. Не могу найти алгоритм преобразования цвета в плотность точек. При этом что бы был не требователен к размеру памяти.
Если кто знает, куда глянуть, буду весьма признателен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Guest_TSerg_*
сообщение Sep 21 2012, 12:29
Сообщение #2





Guests






Ну, я задачи всей не знаю - Вам виднее что и как.

Это оптимизировано под глаз
I := (R * 61 + G * 174 + B * 21) / 256

Это примитивный переход
I = (R+G+В)/3

Однопроходные алгоритмы ест-во быстрее:
- простой treshold
- treshold с матрицей размытия ( визуально больше подробносте, но возникает однородная структура.

Многопроходный Floyd дает неупорядочную структуру, но занимает в 3-4 больше времени.

Наконец, методы понижения размерности (замена точки с интенсивностью на матрицу) могут дать неплохие результаты, о чем я выше говорил.


С матрицей размытия алгоритм таков

arBlur[0,0] := 0;
arBlur[0,1] := 80;
arBlur[1,0] := 192;
arBlur[1,1] := 230;

function Level_Blur(x,y: integer; cl: TColor32): TColor32;
var i,j: integer;
begin
i := y mod 2;
j := x mod 2;
if Intensity(cl) > arBlur[i,j] then Result := Gray32(255)
else Result := Gray32(0);
end;
Go to the top of the page
 
+Quote Post
Petrovich
сообщение Sep 22 2012, 15:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 2-06-05
Из: Днепропетровск
Пользователь №: 5 658



Цитата(TSerg @ Sep 21 2012, 15:29) *
С матрицей размытия алгоритм таков

arBlur[0,0] := 0;
arBlur[0,1] := 80;
arBlur[1,0] := 192;
arBlur[1,1] := 230;

function Level_Blur(x,y: integer; cl: TColor32): TColor32;
var i,j: integer;
begin
i := y mod 2;
j := x mod 2;
if Intensity(cl) > arBlur[i,j] then Result := Gray32(255)
else Result := Gray32(0);
end;

Как то очень просто выглядит... Попробую ,спасибо!
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Sep 24 2012, 08:13
Сообщение #4





Guests






Цитата(Petrovich @ Sep 22 2012, 19:05) *
Как то очень просто выглядит... Попробую ,спасибо!


Примерно так выглядит ( gray, threshold, blur, floyd ):



Кстати, в вашем посте #8 в книжке приведен т.н. "The "false" Floyd-Steinberg filter",

* 3
3 2 (1/8)

который работает хуже истинного Floyd-Steinberg
0 * 7
3 5 1 (1/16)

Есть простой ,в вычислительном отношении, фильтр Сьерры, который дает результаты, чаще лучше, чем Floyd-Steinberg
0 * 2
1 1 0 (1/4)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016