Ну, я задачи всей не знаю - Вам виднее что и как.
Это оптимизировано под глаз 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;
|