Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 3 [Все]   Вниз
  Печать  
Автор Тема: Программа на Visual C++ 6.0 для картинок bmp.  (Прочитано 63544 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Yakut31
Гость
« : 27-05-2008 13:59 » 

Люди добрые помогите пожалуйста, отблагодарю как смогу...
Очень нужно срочно написать на Visual C++ 6.0 написать программу которая из bmp картинок будет извлекать матрицу яркости пикселей... (потом эту матрицу можно изменять и сохранять в другой bmp файл... Но это уже второстепенная задача). Пожалуйста, кто сможет помогите...
« Последнее редактирование: 27-05-2008 17:10 от Sel » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 27-05-2008 16:04 » 

разве в BMP есть матрица яркости пикселей ? Там вроде прямо цвета пикселей
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 27-05-2008 18:13 » 

Можно переводить RGB в YUV, например, затем яркостную составляющую сохранять в качестве градации серого. Рыть нужно в направлении цветовых моделей. Там формулы-то простецкие, можно только яркостную составляющую считать: Y = R * 0.299 + G * 0.587 + B * 0.114
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 27-05-2008 20:02 » 

Цитата: Вад
Y = R * 0.299 + G * 0.587 + B * 0.114
Кстати, она эмпирически выведена, или основана на неких изученных особенностях цветовосприятия глазом?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Yakut31
Гость
« Ответ #4 : 27-05-2008 20:03 » 

Вад, если для тебя все так просто, ты не могбы её написать? Краснею, просто я сишке полный ноль... (я бы придумал как тебя отблагодарить Ага)
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 27-05-2008 20:30 » 

http://en.wikipedia.org/wiki/YUV#Mathematical_derivations_and_formulae
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Yakut31
Гость
« Ответ #6 : 27-05-2008 20:53 » 

Sla, спасибо! А нет того же но на русском?
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 28-05-2008 06:15 » 

http://ru.wikipedia.org/wiki/YUV - очень сжато, но общий смысл есть Улыбаюсь Более подробно - можно погуглить Улыбаюсь Писать ничего сейчас не хочется, может кто ещё напишет Улыбаюсь Тут и делов-то, загрузить RGB и по формуле умножить, сохранив в качестве нового битмапа в формате градаций серого. В принципе, если совсем лень разбираться, можно найти конвертор RGB->YUV (в какой-нибудь формат по полям, скажем, YUV4:2:0), и либо его переделать, либо обрезать только первое поле (Y) картинки. Там функция-то в несколько строчек Улыбаюсь Исходников таких вещей должно быть навалом, YUV - общеупотребимый формат в кодеках, в обработке изображений.

dimka, насколько я понимаю, само отношение основывается на особенностях цветовосприятия, хотя как точная калибровка выполнялась - не выяснял Улыбаюсь Но везде встречал именно это соотношение.
« Последнее редактирование: 28-05-2008 06:19 от Вад » Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #8 : 28-05-2008 10:20 » 

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

про матрицу яркости упомянуто по незнанию имхо.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 28-05-2008 10:28 » 

в VC нет канвы, тут контекст-девайс, если быть точным
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #10 : 28-05-2008 10:32 » 

Алексей1153++, точность - вежливость королей ))) именно контекст я и имел в виду
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 28-05-2008 10:48 » 

marat_, а по-моему, яркость - вполне себе понятие. Сложно по незнанию и ошибке такое завернуть Улыбаюсь Впрочем, пусть автор попробует изложить ещё раз суть проблемы. Подозреваю, что если задание было бы "нарисовать на экране картинку из bmp и сохранить в другой файл", так оно бы как-то близко к этому и было описано Улыбаюсь ТАК ошибиться - это ещё постараться надо.
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #12 : 28-05-2008 10:52 » 

Вад, я и не такое от студентов слышал. после лекции обычно каша в голове. дают им задание, они домой приходят, и в инет. как вспомнил так и написал.

теперь представь себе процесс редактирование яркости пиксела. яркость, количество синего и зелёного. представил? не для неподготовленных...
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 28-05-2008 10:55 » 

Ну ладно, придёт автор и расскажет, что он под яркостью понимает Улыбаюсь
Записан
Yakut31
Гость
« Ответ #14 : 28-05-2008 17:37 » 

Парни я извеняюсь конечно, но помоему я все доступно написал... Кому надо меня сразу поняли... Но для особо доходчивых я еще раз КАК СТУДЕНТ САПРа объясняю: программа должна из bmp картинки "вынимать" матрицу яркости пикселей! т.е. открыли файл в этой проге, "вынули" матрицу, видим перед собой матрицу цифр, можем её изменить и сохранить в другой bmp файл... (но последний пункт не обязательно...)
Я не знаю как еще доступней объяснить... А черт его знает...
Я попросил помочь того кто знает, а не кому самому объяснять надо... А кто знает, тот меня сразу ПРАВИЛЬНО понял!
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #15 : 28-05-2008 21:50 » 

Yakut31, в бмп нет матрицы якрости пикселей. учи матчасть.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 29-05-2008 06:33 » 

marat_, Человек ясно сказал: "Мне нужна яркость".
Ему ответили, что для этого нужно пересчитать в другое представление.

Ну и вопрос... Что подразумевается под яркостью.
Какой цвет более яркий - black или white? green или blue?

А теперь представь:
На некий объект накладывается текстура,  и необходимо определить яркость удалённого объекта. Как?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #17 : 29-05-2008 08:38 » 

А я ваще не понимаю о чём вы продолжаете? Есть разные цветовые модели. В одной из них - компонент яркость. Вад, даже формулу привёл. Вроде всё ясно.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #18 : 29-05-2008 09:21 » 

Sla, из сообщения понятно, что матрица хранится в бмп. какая там хранится матрица??? яркости??? ну-ну
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #19 : 29-05-2008 09:36 » 

Ну это только в твой интертрепации. Ага Yakut31 нигде не утверждал, что в файле BMP хранится матрица яркости пикселей. То, что она явно там не присутствует, ещё не означает, что её там нет и её нельзя извлечь. Информация о яркости пикселей там присутствует. Её и дложна извлекать программа. Это моя интертрепация.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #20 : 29-05-2008 09:38 » 

пипец... у меня друг еврей с таким подтекстом говорит...
Записан
Yakut31
Гость
« Ответ #21 : 29-05-2008 09:50 » 

marat_, нет никакого подтекста!  Улыбаюсь я просто имел ввиду что программа должна работать с bmp файлами (понятно что там в явном виде нет матрицы яркости)... Вад, Джон и Sla меня сразу правильно поняли... Спасибо им большое за помощь и поддержку!!!  Класс!
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #22 : 29-05-2008 09:54 » 

Yakut31, вот так и надо писать.
в бмп действительно может храниться матрица яркости. в виде градации серого. байт на пиксел.
я в своё время много занимался графикой. и твой пост для меня ничем кроме бреда не оказался.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 29-05-2008 10:06 » 

marat_, как писать, ясно только автору, а телепаты... они для этого и телепаты. Вот не знал человек о модели YUV, ему подсказали.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Yakut31
Гость
« Ответ #24 : 29-05-2008 17:38 » 

Ну что парни, никто не возмется мне прогу написать (не за просто так разумеется)? Ага
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #25 : 29-05-2008 18:10 » 

Yakut31, а какие форматы битмапов должна уметь хавать программа ? Улыбаюсь

и вообще ТЗ , а то я , например, MFC буду использовать, а окажется - низя.
Как вводить данные, как выводить
(открыть файл ? Ещё как-то ? Как выдать результат ?)
Записан

Yakut31
Гость
« Ответ #26 : 29-05-2008 20:13 » 

Алексей1153++,MFC можно использовать, форматы любые как получится (я пробовал 24-разрядный), в общем ничего особо мудреного не надо... Улыбаюсь
Спасибо что согласился помочь...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #27 : 29-05-2008 20:21 » 

Yakut31, ТЗ то давай ) А то я сделаю - выбрать файл, загрузить, показать. А дальше?

 Можешь в ЛС , даже удобнее - мне искать проще потом. Туда же - сроки
Записан

Yakut31
Гость
« Ответ #28 : 29-05-2008 20:35 » 

Алексей1153++, давай по аське обсудим (быстрей получится)? Мой номер: 249644954
Если ты не против...
Записан
Yakut31
Гость
« Ответ #29 : 01-06-2008 18:50 » 

 Внимание! Говорит и показывает... Выражай ОГРОМНУЮ человеческую благодарность Алексею1153++  Класс!, за то что он сделал мне эту программу и никопейки за это не взял!!! Это добродушный, честный и отзывчивый человек!!! Еще раз большое спасибо!!!  Внимание! Говорит и показывает...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #30 : 02-06-2008 15:22 » 

хе хе хе... ты забыл рассказать, что я за 1 день всё это сделал кое как и оцениваю работу не более как "поделка на коленке" Отлично  Не из лени, конечно, изза нехватки времени...
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #31 : 14-06-2008 06:39 » 

а вот, собственно, и проблема: находил формулы конвертации из около пяти источников, все чуточку отличаются (? ? ?) и все неправильно работают. Выбрал наиболее приличные по результату, только там тоже - у составляющей U зелёный и синий почему то местами поменялись (это когда для показа на экране делаю YUV -> RGB при Y==0 и V==0)



Код:
r=Y+1.13983*V;
g=Y-0.39465*U-0.58060*V;
b=Y+2.03211*U;

Y = 0.299*r + 0.587*g + 0.114*b;
U = (b-(0.299*r + 0.587*g + 0.114*b))*0.5643+128;
V = (r-(0.299*r + 0.587*g + 0.114*b))*0.7132+128;

может кто поделится реально работающими формулами , или может я что то не так всё таки делаю ?

собственно, делаю так:

исходное RGB -> YUV (результат отображён в трёх окнах в виде RGB) -> результат обратного конвертирования RGB.

для исключения ошибки где то в другом месте программы пробовал так:

R=Y; G=U ; B=V
то есть для такого разложения всё идеально работает. Остаётся подозрение на формулы )


* RGBYUV.jpg (36.98 Кб - загружено 2230 раз.)
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #32 : 14-06-2008 08:41 » 

Лёш, в этих формулах берётся что RGB изменяется от 0 до 1? А ты наверное до 255 берёшь? Их надо отнормировать.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #33 : 14-06-2008 09:34 » 

Джон, ага, 255 беру , сейчас попробую 0...1
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #34 : 14-06-2008 09:54 » 

Джон, тоже хрень какая то выходит, пробовал так

Код:
//------------------------
BYTE R=(BYTE) (255* (Y+1.13983*V)             );
BYTE G=(BYTE) (255* (Y-0.39465*U-0.58060*V)   );
BYTE B=(BYTE) (255* (Y+2.03211*U)             );
//------------------------
double r=((double)R)/255;
double g=((double)G)/255;
double b=((double)B)/255;

double Y = 0.299*r + 0.587*g + 0.114*b;
double U = (b-Y)*0.5643+128;
double V = (r-Y)*0.7132+128;
//------------------------



« Последнее редактирование: 14-06-2008 10:24 от Алексей1153++ » Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #35 : 14-06-2008 12:55 » 

Лёш, ща времени нет разбираться в твоём коде. Ты должен отнормировать по 255

те 255 - это 100% потом расчитать всё по фомулам, потом перевести обратно в базу 255.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #36 : 14-06-2008 13:06 » 

так и сделал ,

double r=((double)R)/255;
double g=((double)G)/255;
double b=((double)B)/255;

 только видать не то что то сделал (( Уже 2 дня пытаюсь понять, что не так
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #37 : 14-06-2008 13:44 » 

Самый классный способ расчитать на бумажке (а ещё лучше - свериться с результатами других), а потом проверить прогу.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #38 : 14-06-2008 13:44 » 

Джон, оно и понятно ) Щас в екселе попробую побаловаться
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #39 : 14-06-2008 13:47 » 

А что вобще должно получиться и с чем ты пробуешь?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #40 : 14-06-2008 14:57 » 

раскладываю RGB на составляющие YUV , эти составляющие можно регулировать (от 0 до 100%) и виден результат , который можно сохранить в файл
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #41 : 15-06-2008 06:37 » 

в общем, сломал моск.
Одна из формул "достаточно хорошо работает" (в плане выходного результата) , однако в результате невооружённым глазом видно отличие от оригинала, а кроме того составляющие U и V "выглядят не так, как в Вики" , ррр

формулы такие
Код:
	R= 255*(Y+(1.4075*(V-128/255)));			//r
G= 255*(Y-(0.3455*(U-128/255)-(0.7169*(V-128/255)))); //g
B= 255*(Y+(1.7790*(U-128/255))); //b
//---------------------------------------------------
double r=((double)R)/255;
double g=((double)G)/255;
double b=((double)B)/255;
double Y = 0.299*r + 0.587*g + 0.114*b;
double U = -r*0.169-g*0.332+b*0.500+128/255;
double V = r*0.500-g*0.419-b*0.0813+128/255;

« Последнее редактирование: 15-06-2008 17:49 от Алексей1153++ » Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #42 : 15-06-2008 07:37 » 

Алексей1153++, а ты хочешь получит обратную совместимость?
а ты в английской вики все перепробовал?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #43 : 15-06-2008 07:48 » 

Sla, хочется, чтобы собранное всё взад было наименее искажено

всё пробовал, и в русской, и в о вражеской и ещё парочка-другая каких то левых сайтов - что всё косяческое. Вот я и спрашиваю - может кто то пользовал формулы, которые точно рабочие ?
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #44 : 15-06-2008 08:47 » 

Алексей1153++, а ты тута был?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #45 : 15-06-2008 10:51 » 

зашёл, но вот так сходу не нашлось ничего полезного. Чуть позже пороюсь ещё
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #46 : 15-06-2008 12:37 » 

ну вот такие формулы тут нашёл
      Y = 0.299*r + 0.587*g + 0.114*b;
      U = (b-Y)*0.492111;
      V = (r-Y)*0.877283;

но выглядит всё также, как и в предыдущем варианте

в общем, мистика какая то
Записан

darkbird
Гость
« Ответ #47 : 15-06-2008 16:55 » 

совсем не мистика
я диплом по ентой гадости пишу, по колориметрическим системам, правда YUV я не использую, чур меня. но сходный трабл тож был.
я так понял, проблема еще не решена ? не хо вникать в YUV, но кроме нормализации (деления на 255) можно попробовать пересчитывать RGB в sRGB(это мониторный стандарт) с использованием стандарта источника освещения D65. ну и плюс нужно контролировать выход за границы диапазона. например при обратной конвертации в RGB проверять принадлежность диапазону 0..255, и значениям, выходящием за диапазон, присваивать 0 или 255 соответственно.
воть:
1. brucelindbloom.com
2. http://www.tecgraf.puc-rio.br/~mgattass/color/ColorIndex.html
3. easyrgb.com

кстати, YUV вроде не одна есть.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #48 : 15-06-2008 17:02 » 

darkbird, про конроль диапазона - это мысль ) Спасибо, сейчас стану экспериментировать и читать ))
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #49 : 15-06-2008 17:55 » 

симпатишный тут brucelindbloom.com фрактал ) Кстати, первый раз вижу круглую рамку у объекта на странице (логотип, когда на него табом перепрыгиваешь). Прикольно )

поставил проверку диапазонов, выход хороший, а составляющие U и V всё равно "не как в вики" Улыбаюсь)
« Последнее редактирование: 20-06-2008 15:51 от Алексей1153++ » Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #50 : 15-06-2008 18:08 » 

Offtopic:


Кстати, первый раз вижу круглую рамку у объекта на странице (логотип, когда на него табом перепрыгиваешь). Прикольно )

тю...
Поставлю в угол.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #51 : 15-06-2008 20:32 » 

Алексей1153++, а мне нравится последний вариант.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #52 : 16-06-2008 04:13 » 

Слав, вот колись давай. Я просто не знаю, как оно должно выглядеть на самом деле, поскольку первый раз за эту YUV схватился, поэтому стремился сделать похоже на то, что в вики. Но если ты говоришь, что теперь результат правильный - то, значит, так и оставить ?
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #53 : 16-06-2008 06:59 » 

Алексей1153++, та я не в теме,
но если в первом варианте у тебя не было  туда=сюда, то второй вариант мне болше нравится
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #54 : 16-06-2008 07:23 » 

понятненько...
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #55 : 16-06-2008 10:30 » 

Лёш, тут может быть расхождение небольшое. яркость это ещё и YCbCr. такое в jpeg используется

вот кусок из стандарта

Цитата
Conversion to and from RGB
   
Y, Cb, and Cr are converted from R, G, and B as defined in CCIR Recommendation 601
but are normalized so as to occupy the full 256 levels of a 8-bit binary encoding.  More
precisely:

Y   = 256 * E'y
Cb  = 256 * [ E'Cb ] + 128
Cr  = 256 * [ E'Cr ] + 128

where the E'y, E'Cb and E'Cb are defined as in CCIR 601.  Since values of E'y have a
range of 0 to 1.0 and those for  E'Cb and E'Cr have a range of -0.5 to +0.5,  Y, Cb, and Cr
must be clamped to 255 when they are maximum value.

RGB to YCbCr Conversion
   
YCbCr (256 levels) can be computed directly from 8-bit RGB as follows:

Y   =     0.299  R + 0.587  G + 0.114  B
Cb  =   - 0.1687 R - 0.3313 G + 0.5    B + 128
Cr  =     0.5    R - 0.4187 G - 0.0813 B + 128

NOTE - Not all image file formats store image samples in the order R0, G0,
B0, ... Rn, Gn, Bn.  Be sure to verify the sample order before converting an
RGB file to JFIF.

   
YCbCr to RGB Conversion
   
RGB can be computed directly from YCbCr (256 levels) as follows:

R = Y                    + 1.402   (Cr-128)
G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
B = Y + 1.772   (Cb-128)

определяем яркость, количества синего и зелёного. то, что у тебя и было, кажется
« Последнее редактирование: 16-06-2008 10:33 от marat_ » Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #56 : 16-06-2008 10:35 » 

посмотрел последние обзоры по теме яркости. чего-то не понимаю... формулы одни и те же, а описание различается...  А черт его знает...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #57 : 16-06-2008 10:48 » 

Марат, ага, путаница какая то имеется. Похоже, какую то конкретную модель надо искать и применять, когда проект коммерческий, а не когда, как сейчас, чисто "для препода" , поэтому, сейчас даже смысла не имеет гадать - что именно у него препод имел в виду ) 
Якут ушёл на защиту, как я понял, скоро узнаем, угадал я или нет
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #58 : 20-06-2008 15:34 » 

вроде всё норм, вот последний вариант с проектом. Приложенная картинка (из вики) копирайтов не имеет, это я проверил, чтобы не было войны ))

ps.просьба к тем, кому не лень, потестировать на юзероустойчивость

* bmpwork.zip (134.88 Кб - загружено 1769 раз.)
Записан

pralbert
Новенький

by
Offline Offline

« Ответ #59 : 29-11-2010 10:54 » 

Yakut31,Алексей1153++,  если можно выложить код данной программы
Внимание! Говорит и показывает... Выражай ОГРОМНУЮ человеческую благодарность Алексею1153++  Класс!, за то что он сделал мне эту программу и никопейки за это не взял!!! Это добродушный, честный и отзывчивый человек!!! Еще раз большое спасибо!!!  Внимание! Говорит и показывает...
тк делаю нечто подобное, но не могу разобраться, как наложить яркость одной картинки на другую (т.е. считать данные пикселей картинки-источника и на их основании переписать данные пикселей картинки-приемника)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #60 : 29-11-2010 16:31 » 

pralbert, так вот в аттаче же архивчик Улыбаюсь
https://forum.shelek.ru/index.php?action=dlattach;topic=15064.0;attach=2381
Записан

Страниц: 1 2 3 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines