Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Преобразование в ч/б [D7, Win2k]


Страницы:   1 2

seregka ©   (2005-03-20 11:35:00) 

Как "очернобелить" картинку???
Спасибо


uny   (2005-03-22 06:03:00) [1]

вестимо например отсюда:
http://www.rudtp.ru/articles.php?id=44


Anatoly Podgoretsky   (2005-03-21 20:15:00) [2]

WondeRu ©   (21.03.05 09:09) [26]
Из Интернет вестимо, зная названия стандартов можно определить область применения, но для большинства случаев, то есть для экранных изображений нужна вторая, а вот вывод на печать, факсы, фотографии нужны другии.


Fenik   (2005-03-21 20:06:00) [3]

> Anatoly Podgoretsky ©  (20.03.05 22:04) [25]

Спасибо.

> seregka  (20.03.05 21:59) [24]

1. if (0.114*Dest^.b + 0.587*Dest^.g + 0.299*Dest^.r) > Value
Хоть результат будет похож на пердыдущий, но зато "правильный" :))

2. Так я и думал - не обновляешь экран.
procedure form1.button1click(sennder...);
begin
 bmp:=image1.picture.bitmap;
 Threshold(Bmp, 127, clWhite, clBlack);
 Image1.RePaint;
end;

> WondeRu ©  (21.03.05 09:09) [26]
> нормальная реакция!!! (по крайней мере для меня!!!)


Я ЭТО ПРИМУ К СВЕДЕНЬЮ !!!!!!!!!!!
:)


WondeRu   (2005-03-21 09:09:00) [4]

Fenik   (20.03.05 21:11) [20]
А потом меня удивила эмоциональная реакция AlterEgo of WondeRu.


нормальная реакция!!! (по крайней мере для меня!!!)

Anatoly Podgoretsky ©   (20.03.05 22:04) [25]

век живи, век учись! Спасибо за формулы, знал только вторую! А откуда дровишки, очень интересно? :)


Anatoly Podgoretsky   (2005-03-20 22:04:00) [5]

Y = K1*R + K2*G + K3*B

1. 0,360*R + 0.530*G + 0.110*B
2. Стандаpт CCIR 601-1 (как в стандаpтной VGA-ой функции):
 0,299*R + 0,587*G + 0,114*B
3. Стандаpт CCIR 709:
 0,213*R + 0,715*G + 0,072*B
4. Стандаpт ITU:
 0,222*R + 0,707*G + 0,071*B


seregka   (2005-03-20 21:59:00) [6]

procedure Threshold(Bitmap: TBitmap; Value: Byte; Color1, Color2: TColor);

function ColorToRGB(Color: TColor): TRGB;
begin
with Result do begin
  R := Lo(Color);
  G := Lo(Color shr 8);
  B := Lo((Color shr 8) shr 8);
end;
end;

type
TRGB = packed record
  B, G, R: Byte;
end;
pRGB = ^TRGB;

var x, y: Word;
  C1, C2: TRGB;
  Dest: pRGB;
begin
C1 := ColorToRGB(Color1);
C2 := ColorToRGB(Color2);
for y := 0 to Bitmap.Height - 1 do begin
  Dest := Bitmap.ScanLine[y];
  for x := 0 to Bitmap.Width - 1 do begin
    if (Dest^.b + Dest^.g + Dest^.r) / 3 > Value
      then Dest^ := C1
      else Dest^ := C2;
    Inc(Dest);
  end;
end;
end;

procedure form1.button1click(sennder...);
begin
bmp:=image1.picture.bitmap;
Threshold(Bmp, 127, clWhite, clBlack);
end;


Fenik   (2005-03-20 21:18:00) [7]

> Anatoly Podgoretsky ©  (20.03.05 21:13) [21]
> Если автору вопроса интересно, то я могу привести более полный список коэффициентов. Этот не единственный и они должны использоваться в зависимости от области применения.


Интересно не только автору вопроса..


Anatoly Podgoretsky   (2005-03-20 21:14:00) [8]

Fenik   (20.03.05 21:11) [20]
Ну все будем считать, что ты понял и извинился.


Anatoly Podgoretsky   (2005-03-20 21:13:00) [9]

Fenik   (20.03.05 21:05) [19]
Молодец, знаешь и права соблюдаешь.
Ты бы ранее вместо наезда спросил бы почему тебе сказали, что код неверный и не было бы инцидента.
Если автору вопроса интересно, то я могу привести более полный список коэффициентов. Этот не единственный и они должны использоваться в зависимости от области применения.


Fenik   (2005-03-20 21:11:00) [10]

> Anatoly Podgoretsky ©  (20.03.05 21:04) [18]
> Выходит, что ты специально подставил парня, приведя заведомо ложный код [1]


:)
У меня в старой программе (когда писал её, не знал еще про эту формулу) был тот код, что я привел в [1]. Я просто выдрал его оттуда, забыв, что есть правильная формула. А потом меня удивила эмоциональная реакция AlterEgo of WondeRu.

Делать мне больше нечего, как подставлять кого-то.


Fenik   (2005-03-20 21:05:00) [11]

"У тебя ошибка в программе." (с) АП  :))

Я не телепат. Код покажи.
Наверное экран не обновляешь после нажатия на Button1.


Anatoly Podgoretsky   (2005-03-20 21:04:00) [12]

Fenik   (20.03.05 19:50) [14]
Выходит, что ты специально подставил парня, приведя заведомо ложный код [1]

seregka   (20.03.05 20:03) [15]
Рабочий говоришь, тогда сделай три прямоугольника и закрась их -один 100% красного, другой 100% зеленого и последний 100% синего затем преобразуй и посмотри глазами. При правильной формуле яркость зеленого цвета должна быть примерно в 6 раз меньше, чем синего.


seregka   (2005-03-20 20:32:00) [13]

нет.
Объясню популярно:
допустим я повесил ч\б на Button1, поворот на Button2.

Если я нажимаю на Button1 ничего не происходит. Если же после этого на Button2, то картинка сразу поворачивается и становится черно-белой.


Fenik   (2005-03-20 20:10:00) [14]

> seregka  (20.03.05 20:03) [15]
> Г-ну Фенику вопрос:
> код рабочий, но одно НО: картинка становится чернобелой не сразу, а только после очередной операции над Image (например, поворот на 90), т.е. сразу ч/б и перевернутое.


Не вижу вопроса. Причем здесь поворот?
Нужно повернуть и одновременно сделать ч\б?


seregka   (2005-03-20 20:03:00) [15]

Ладно парни, прекращайте ругаться.

Г-ну Фенику вопрос:

код рабочий, но одно НО: картинка становится чернобелой не сразу, а только после очередной операции над Image (например, поворот на 90), т.е. сразу ч/б и перевернутое.


Fenik   (2005-03-20 19:50:00) [16]

> Anatoly Podgoretsky ©  (20.03.05 19:30) [13]
> Зря, если бы без твоего налета, то я бы привел формулу, а так продолжай дураком жить.


Неужто всё так серьезно?
I = 0.299R + 0.587G + 0.114B

-------
Смайлики незаметные что ли?  :))


Anatoly Podgoretsky   (2005-03-20 19:30:00) [17]

Зря, если бы без твоего налета, то я бы привел формулу, а так продолжай дураком жить.


Fenik   (2005-03-20 19:25:00) [18]

> Anatoly Podgoretsky ©  (20.03.05 19:21) [11]
> На угрозу не отвечаю, с этим в песочницу.


Щас, за ведёрком только сбегаю :))))))


Anatoly Podgoretsky   (2005-03-20 19:21:00) [19]

Fenik   (20.03.05 19:01) [7]
На угрозу не отвечаю, с этим в песочницу.


Fenik   (2005-03-20 19:20:00) [20]

> AlterEgo of WondeRu ©  (20.03.05 19:13) [9]
> привел в 6, а я никогда ни кричу... это просто эмоции...


Ага верно, вы ведь, батенька, Альтер-Эго! :))


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо