Главная страница
    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.53 MB
Время: 0.042 c
14-1118403954
Суслик
2005-06-10 15:45
2005.07.11
Посоветуйте алгоритм репликации


1-1118350350
Jakudza
2005-06-10 00:52
2005.07.11
sms server


11-1102062843
TraideR
2004-12-03 11:34
2005.07.11
XP Manifest


8-1110335440
DDDeN
2005-03-09 05:30
2005.07.11
Поиск заголовка mp3


10-1095360732
Аид
2004-09-16 22:52
2005.07.11
TWebBrowser





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский