Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Алгоритм преобразования монохромного изображения   Найти похожие ветки 

 
dmk ©   (2005-03-15 00:52) [40]

Так черещз блокнот скопируй и шрифт поменяй.
Все читается =)


 
Fenik   (2005-03-15 17:44) [41]

> Штотоносец  (14.03.05 23:21) [37]
> Остается теперь оптимизацией заняться =)


procedure SetGrayScale(Bitmap: TBitmap; Value: Byte);
var Pixel: pRGBTriple;
   X, Y: Integer;
   A, A_2, B: Double;
   ByteTable: array [Byte] of Byte;
begin
 Bitmap.PixelFormat := pf24Bit;
 if Value > 1 then begin
   A := 255/(Value-1);
   A_2 := A/2;
   for X := 0 to 255 do begin
     B := A * Round(X/A);
     if (X - B) > A_2
       then ByteTable[X] := Round(A*Round(X/(A+1)))
       else ByteTable[X] := Round(X);
   end;
 end
 else
   FillChar(ByteTable, SizeOf(ByteTable), 0);

 for Y := 0 to Bitmap.Height - 1 do begin
   Pixel := Bitmap.ScanLine[Y];
   for X := 0 to Bitmap.Width - 1 do begin
     with Pixel^ do begin
       rgbtBlue  := ByteTable[rgbtBlue];
       rgbtGreen := ByteTable[rgbtGreen];
       rgbtRed   := ByteTable[rgbtRed];
     end;
     Inc(Pixel);
   end;
 end;
end;


Тестирование - http://fenik.nm.ru/Gray.zip
Но этот алгоритм не умный, так сказать. Так как - [11].
Возьми например какртинку http://fenik.nm.ru/UGADAY.JPG и установи 3 цвета. В итоге лажа. Нужен умный алгоритм, который будет анализировать распределение цветов и в соответствии с этим подбирать опорные точки.


 
Fenik   (2005-03-15 18:53) [42]

Упс, опечаточка, вместо строки -
   else ByteTable[X] := Round(X)
нужно
   else ByteTable[X] := Round(B)

В тесте тоже исправить.
Это я перед отправкой решил подправить, понимаешь.. :))


 
Fenik   (2005-03-15 19:19) [43]

> Штотоносец

Кстати, я проверил ситуации (b-a*c)>(a/2) никогда не возникает.
Поэтому всё заполнение таблицы сводится к

   A := 255/(Value-1);
   for X := 0 to 255 do
     ByteTable[X] := Round(A * Round(X/A));


Тест я перезакачал. Можешь проверить.
Вот такая оптимизация. :))


 
Fenik   (2005-03-15 19:39) [44]

Блин, да это ж почти тоже самое, что и я первый раз писал "грубый вариант". -))



Страницы: 1 2 вся ветка

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.033 c
14-1118188805
Crazy_Diman
2005-06-08 04:00
2005.07.11
работа с DrawDrid


5-1087226009
far
2004-06-14 19:13
2005.07.11
Управляемое сохранение свойств компонента


14-1118216502
Bronco
2005-06-08 11:41
2005.07.11
И снова об авто. Очередной шедевр отечественного автопрома


1-1119588745
ORMADA
2005-06-24 08:52
2005.07.11
Res


14-1118826756
sco123
2005-06-15 13:12
2005.07.11
Требуется программист на Delphi