Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу Перевод в чернобелый цвет
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
DOVE DOVE вне форума
Member
 
Сообщений: 67
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.12.2006
По умолчанию Перевод в чернобелый цвет - 01.12.2008, 23:37

Здравствуйте. Возможно тема не совсем сюда, но все же пишу на делфи, так что спрашу и тут.
необходимо из цветного изображение получить его чернобелый аналог. именно чернобелый - что бы было два цвета. сейчас пользуюсь RGB. Получаю значения RGB изображение и по формуле (11B+30R+59G)/100 перевожу цвета в оттенки серого. но всё равно цветов достаточно много, а нужно именно черно белая палитра. есть какието способы?
Ответить с цитированием
  (#2 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 02.12.2008, 20:57

а что мешает установить какой-то порог, и всё, что меньше его перегонять в чёрный, а всё что выше - в белый?
Ответить с цитированием
  (#3 (permalink)) Старый
Guzilas Guzilas вне форума
Member
 
Сообщений: 80
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2008
По умолчанию 03.12.2008, 10:01

Цитата:
Здравствуйте. Возможно тема не совсем сюда, но все же пишу на делфи, так что спрашу и тут.
необходимо из цветного изображение получить его чернобелый аналог. именно чернобелый - что бы было два цвета. сейчас пользуюсь RGB. Получаю значения RGB изображение и по формуле (11B+30R+59G)/100 перевожу цвета в оттенки серого. но всё равно цветов достаточно много, а нужно именно черно белая палитра. есть какието способы?
Говориш что нужно два цвета и в тоже время хочеш чернобелое изображение, два цвета это монохромное изображение а ч.б. это градация от чернова до белова, к тамуже где ты нашол такую формулу ! правильно для ч.б. Val:= (R + G + B) / 3.
Ответить с цитированием
  (#4 (permalink)) Старый
andriano andriano вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 13.02.2006
По умолчанию 03.12.2008, 10:30

1. Для преобразования к grayscale изображению, естественно, верна формула, приведенная DOVE, а не Guzilas (хотя последний отстаивает свою неверную точку зрения довольно безапелляционно).
2. При редуцировании количества цветов (в частности от 256 grayscale до 2 monochrome) можно применять одну из двух техник:
- округление до ближайшего, в данном случае все, что ниже оределенного порога, считать черным, а выше - белым.
- dithering, т.е. округление в ту или иную сторону с учетом накопленной ошибки. Сложность метода - в выборе адекватного порядка обработки картинки и направлений распространения ошибки.
Примерно что должно получаться при преобразовании серого клина:
округление: 000000000000001111111111111
dithering: 00001000100101011011101111
Ответить с цитированием
  (#5 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 03.12.2008, 14:26

выбор техники зависит от поставленной задачи.
Округление - для получения картинки, как в комиксах, а вторая - имитация чёрнобелой картинки с помощью монохромной..
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
DOVE DOVE вне форума
Member
 
Сообщений: 67
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.12.2006
По умолчанию 03.12.2008, 22:22

ну я имел ввиду черно белое изображение - именно двухцветное, а не градацию от черного к белому, извеняюсь за неточность.
а поповоду техники, то сейчас думаю о том что ниже даного порога - черное, выше - белое. и на сколько я понял - то сначала преобразуем изображение в градацию серого ( (11B+30R+59G)/100 ), и уже полученное переводим в двухцветное, а не ищим порог на цветном изображении?
Ответить с цитированием
  (#7 (permalink)) Старый
andriano andriano вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 13.02.2006
По умолчанию 05.12.2008, 13:56

Ну, скорее для каждого пикселя по указанной формуле вычисляем яркость, после чего сразу переводим его в могохром. Лишнее промежуточное изображение совершенно ни к чему.
Ответить с цитированием
  (#8 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 05.12.2008, 14:10

что в принципе одно и то же.
Ответить с цитированием
  (#9 (permalink)) Старый
andriano andriano вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 13.02.2006
По умолчанию 06.12.2008, 23:36

Цитата:
что в принципе одно и то же.
Ну да.
С точностью до скорости работы и объема запрашиваемой памяти.
Ответить с цитированием
  (#10 (permalink)) Старый
Barklay Barklay вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.06.2007
По умолчанию 18.01.2009, 02:50

По теме - перевод в два цвета - понятно.
А вот перевод в градации серого...
Откуда взялась такая странная формула (см. выше - пост DOVE )
Код:
I := 11B+30R+59G)/100
Вседа считал, что такой перевод есть вычисление нормированной длины трёхмерной гипотенузы:
Код:
I := sqrt( sqr( R ) + sqr( G ) + sqr( B )) / sqrt( 3 )
Разве не так?
Ответить с цитированием
  (#11 (permalink)) Старый
andriano andriano вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 13.02.2006
По умолчанию 15.02.2009, 09:21

Цитата:
По теме - перевод в два цвета - понятно.
А вот перевод в градации серого...
Откуда взялась такая странная формула (см. выше - пост DOVE )
Код:
I := sqrt( sqr( R ) + sqr( G ) + sqr( B )) / sqrt( 3 )
Разве не так?
Орган зрения человека - орган нелинейный, к тому же имеющий различную чувствительность к разным спектральным составляющим. Поэтому ответ надо исакть не в математике, а в физиологии.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цвет blackshot Любые вопросы от новичков 1 27.04.2011 11:43
DrawGrid цвет клетки Rhcp C++ Builder 3 25.03.2011 20:55
Красный цвет - the end ? koren Ноутбуки 1 01.03.2009 08:34
RichTextBox и цвет yelis Visual Basic 0 28.08.2008 19:50
Как поменять цвет бордюра Odin_KG Visual C++ 2 10.11.2007 18:14
Цвет из #FFFFFF в imagecolorallocate($i, 255, 255, 255); elnik PHP 2 23.10.2007 13:05
Как задать цвет у Label ROLF Delphi 5 03.03.2007 13:08
Цвет в Excel ГРАД Visual Basic 4 07.06.2006 14:30
Цвет сетки в CListCtrl, как задать другой цвет Заяц Visual C++ 1 11.11.2005 20:10
Цвет StaticText в С++ Darina Visual C++ 1 15.09.2005 20:36
Цвет в StaticBOX AlexLux Visual C++ 2 24.09.2004 16:48
Как можно задать цвет конкретной ячейки или цвет текста в ней для TStringGrid Anonymous Delphi 1 16.07.2003 18:14



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов