![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
как бы нам превратить цветную картинку в черно-белую?
ну ScanLine - это понятно... но вот что с ним делать? по какому алгоритму обрабатывать пиксели? я вот подумал и решил что это будет среднее арифметическое между тремя составляющими цвета одного пиксела... наваял такой вот код: Код:
непонятно другое: сравнил результат проги и результат фотошопа. они отличаются. хоть и совсем немного, но отличаются. у меня в проге картинка получается светлее, чем в фотошопе... предположил что это может быть связано с использованием Round, что он 5.5 округлит в 6, а в фотошопе округляется до меньшего, в результате значния цвета становятся меньше и картинка в целом темнее... попробовал использовать Trunc вместо Round, но результат тот же... я вот думаю что операция обесцвечивания картинки должна дать однозначный результат - черно-белую картинку, причем всегда одинаковую. а получается что разные программы дают разный результат. в чем дело? у меня алгоритм неправильный? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 03.02.2010
Сообщений: 178
|
![]()
g = 0.299R + 0.587G + 0.114B
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
что это???
![]() т.е. я понял что это, но почему так сложно? я имею в виду не реализовать сложно, а сам алгоритм... откуда берется именно такое соотношение? |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
потому что глаз по разному воспринимает разные цвета.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 03.02.2010
Сообщений: 178
|
![]()
Такое преобразование учитывает разную чувствительность глаза к красной, зеленой и синей составляющей и в результате яркость изображения воспринимается одинаково.
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
сделал g = 0.299R + 0.587G + 0.114B...
различий еще больше, чем с моим вариантом... ... ну ладно, с обесцвечиванием разобрались... а как увеличить насыщенность? если говорить простым языком, то насыщенность - это когда красный краснее, зеленый зеленее и т.д. но если просто увеличивать значение цветовых составляющих, то мы получим осветление картинки (она будет белеть), а не насыщеность Последний раз редактировалось xrob; 25.03.2012 в 15:49. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
перенес в предыдущий пост
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() Цитата:
Т.е. нужно "растаскивать" цвета не от 0, а в разные стороны от некоторого среднего. В качестве этого среднего должен быть серый цвет определенной интенсивности, в качестве которого можно попробовать разные варианты: - (127,127,127), - вместо "127" : 0.29R + 0.60G + 0.11B, - вместо "127" : (R + G + B)/3. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разветвляющийся алгоритм,циклический алгоритм и Многомерные массивы (Pascal) | TrapperPTZ | Помощь студентам | 1 | 26.01.2012 08:58 |
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм. | iamhated | Помощь студентам | 1 | 15.01.2012 16:24 |
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм | iamhated | Помощь студентам | 1 | 14.01.2012 16:22 |
Алгоритм TMDS (Алгоритм передачи данных интерфейса DVI) | Pro4RE | Помощь студентам | 2 | 24.04.2011 21:55 |
Волновой алгоритм (алгоритм Ли) | MrRockchip | Общие вопросы C/C++ | 4 | 10.05.2010 13:26 |