Форум: "Media";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
ВнизКак качественно перевести цветную картинку в черно-белую Найти похожие ветки
← →
dmitriyk (2002-01-31 03:22) [0]Народ! Может кто знает как перевести картинку в черно-белую, при этом не теряя качества. Пробовал процедуру, которая есть в этом форуме, там где использованы стандартные коэыициенты перевода, применяемые на TV, но она в итоге, сильно искажает картинку.
Може кто поможет готовым кодом. буду признателен.
← →
Фэ (2002-01-31 10:14) [1]http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1012350234&n=7
← →
Yuraz (2002-01-31 10:19) [2]var p: TColor;
p1: byte;
{...}
for x := 0 to Image1.Width-1 do
for y := 0 to Image1.Height-1 do
begin
p := Image1.Canvas.pixels[x, y];
p1 := (GetRValue(p)+GetGValue(p)+GetBValue(p)) div 3;
Image1.Canvas.pixels[x, y] := RGB(p1, p1, p1);
end;
← →
dmitriyk (2002-02-01 03:22) [3]Yuraz !
К сожалению ваша процедурка после преобразования, тоже портит картинку. Но всеравно, большое спасибо всем.
← →
VuDZ (2002-02-01 04:55) [4]
for( int i=0; i < nColors; i++)
{
long lSquareSum = bmInfo.bmiColors[i].rgbRed
* bmInfo.bmiColors[i].rgbRed
+ bmInfo.bmiColors[i].rgbGreen
* bmInfo.bmiColors[i].rgbGreen
+ bmInfo.bmiColors[i].rgbBlue
* bmInfo.bmiColors[i].rgbBlue;
int nGray = (int)sqrt(((double)lSquareSum)/3);
pLP->palPalEntry[i].peRed = nGray;
pLP->palPalEntry[i].peGreen = nGray;
pLP->palPalEntry[i].peBlue = nGray;
pLP->palPalEntry[i].peFlags = 0;
}
http://www.codeguru.com/bitmap/grayscale.shtml
http://www.codeguru.com/bitmap/index.shtml
← →
Фэ (2002-02-01 09:47) [5]>dmitriyk
Обрати еще раз внимание на гамма-коррекцию.
А вот тебе пример софта и сконвертированных изображений
ftp://ftp.pi8plus.ru/download/math/image/togray
25,872 d3.jpg метод RGB/3
27,046 gamma1_5.jpg Гамма-коррекция 1.5
27,068 gamma2_0.jpg -"- 2.0
26,703 gamma2_5.jpg -"- 2.5
29,734 test.jpg Тестовая картинка
235,008 togray.exe Тест
25,928 tv.jpg Метод TV
ВОпросы остануться - отвечу.
← →
Фэ (2002-02-01 09:48) [6]Sorry
ftp://ftp.pi8plus.ru/download/math/images/togray
← →
Фэ (2002-02-01 09:50) [7]Да что за черт
ftp://ftp.pi8plus.ru/pub/download/math/images/togray/
← →
dmitriyk (2002-02-02 04:25) [8]>Фэ, VuDZ
Спасибо большое. Вопросов пока нет.
← →
Donal_Graeme (2002-02-03 20:59) [9]procedure ToGray(Bm1 : TBitmap; BR : TBitmap);
var I, J, K : Integer;
R, G, B, C : Byte;
L1, L2 : PByteArray;
begin
If Bm1.PixelFormat <> pf24bit then Bm1.PixelFormat := pf24bit;
BR.Width := Bm1.Width;
BR.Height := Bm1.Height;
BR.PixelFormat := pf24bit;
For I := 0 to Bm1.Height -1 do
begin
L1 := Bm1.ScanLine [I];
L2 := BR.ScanLine [I];
For J := 0 to Bm1.Width -1 do
begin
K := J*3;
B := L1[K];
Inc(K);
G := L1[K];
Inc(K);
R := L1[K];
C := (299*R +587*G +114*B) div 1000;
L2[K] := C;
Dec(K);
L2[K] := C;
Dec(K);
L2[K] := C;
end;
end;
end;
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c