Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.066 c
14-1118329934
Soft
2005-06-09 19:12
2005.07.11
Исполнитель желаний.


14-1118740157
fedotawa
2005-06-14 13:09
2005.07.11
А как коммунарщики узнают где копать?


1-1117912910
Destroyer
2005-06-04 23:21
2005.07.11
Как организовать несколько визуальных режимов программы?


1-1118836041
kot
2005-06-15 15:47
2005.07.11
Code snippets D9


1-1118433780
Antol
2005-06-11 00:03
2005.07.11
игра





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский