1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
|
|
1 | |
Имитация светового окружения08.04.2015, 08:23. Показов 1269. Ответов 26
Метки нет (Все метки)
Здравствуйте
Есть картинка, сферическая карта (поэтому так странно и выглядит). Картинка непростая - пиксели могут иметь любые значения (а не только 0..255). Напр на втором аттаче яркость в 10 раз меньше, но не все стало темно. Пользователь задает число лампочек, обычно неск десятков. Требуется расставить их на картинке так чтобы они как можно точнее описывали "окружение", как если бы свет излучался из картинки вокруг нас. Формально надо найти позицию каждой точечной лампочки и ее RGB интенсивность Не по теме: Ну вот, сейчас опять максимум "удивленное пожимание плечами", "неясна задача" - и вернутся месить олимпиадщину на N листах :)
0
|
08.04.2015, 08:23 | |
Ответы с готовыми решениями:
26
Сила светового давления Ход светового луча Трекинг светового пучка Найти величину светового давления |
08.04.2015, 09:16 | 2 |
Ну а как вы хотели с таким описанием?
Что значит "описывали"? Как источник света может что-то "описывать"?
Где я должен находиться, чтобы высказывание работало? В центре сферы (раз это развертка сферы)? Чему соответствуют ваши картинки?
0
|
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
|
|
08.04.2015, 10:52 [ТС] | 3 |
Правду сказать ничего не хотел, просто пинг, может кто новый появился с которым есть о чем поговорить
Развертка сферы соответствует сфере Т.е. если мы мапнем эту картинку на сферу и будем смотреть из ее центра, то стены (что кривые на картинке) станут ровными. Такая критика ничем не кончается - но всех утомляет. Смотрите глазами юзера. Что он хочет - вполне ясно.
0
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
|
|
08.04.2015, 13:50 | 4 |
Опишем лампочку как пятно выбранного цвета с прозрачностью, яркость пятна зависит от яркости цвета , а прозрачность зависит от удалением от центра лампочки (тут выбрать закон по душе = линейно/квадрат расстояния/т.п.) Требуется взять такие цвета и так расставить лампочки, чтобы сферическая картинка минимально отличалась от заданной.
Первым делом хочется предложить генетический алгоритм, поскольку задачу можно свести к поиску рисунка похожего на заданный. Вторым делом на ум приходит следующее: Для выбранного закона для пятна лампочки строим обратное преобразование. Т.е. если на рисунке у нас пятно от лампочки, то после преобразования этот рисунок должен быть максимально похож на рисунок с яркой точкой в центре бывшего пятна. Таким преобразованием проходим по исходной картинке (естественно, не забыв что рисунок не простой, а натянут на сферу). В преобразованной картинке ищем максимум яркости, запоминаем что туда будем ставить лампочку с такой же яркостью, вычитаем пятно лампочки из первичного изображения, проводим повторное преобразование над изображением с вычетом (либо же вычитаем "обратное пятно" помноженное на яркость найденной точки из преобразованной картинки, тогда повторное преобразование делать не надо). Повторяем поиск пока не закончатся лампочки. Может в чистом виде это не будет достаточно хорошим решением, но можно использовать как основу для дальнейших рассуждений.
0
|
08.04.2015, 13:58 | 5 |
Я не о том. Картинка 1 относительно картинки 2 это что? 2 -- то что имеем, а 1 -- то, что надо получить? Или как?
Слушайте, что за детский сад? Это не тот кейс чтобы глазами юзера смотреть (мало ли он под лсд -- так тем более). Мне непонятно чего он хочет. Расставить лампочки так, чтобы получившаяся освещенность дала возможность предметы разглядеть?
0
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
|
|
08.04.2015, 14:53 | 6 |
Если же стоит задача сделать что-то типа LED подсветки для телевизора, то лучше сферу разбить сеткой из лампочек и подстраивать каждую лампочку под среднее арифметическое от освещения в соответствующей ячейке.
0
|
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
|
|
09.04.2015, 07:46 [ТС] | 7 |
HDR картинка содержит большие значения, но монитор-то их не отображает (максимум "белый"). Др словами это всего лишь "видимая часть айсберга". Визуально первая картинка говорит немного - ну везде много света, значит и лампочки ставим примерно равномерно. Простой способ пощупать HDR - поделить все значения напр на 10 и опять посмотреть. Вот теперь (вторая картинка) мы видим что основная масса света идет от светильника на потолке и из окон, как оно и есть в реальности. Поэтому "среднее арифметическое" отдыхает.
Ой, ну как-то совсем дыряво Связываться с "пятнами" - это ворох проблем. Ну вот нашли пыксель напр со значением 10 (считаем что монитор отображает 0..1). И что, это уже "пятно" на которое надо тратить драгоценную лампочку? Или пятно идет в виде какой-то узкой длинной полосы. Или пятно-то отличное (напр окно), но большое, сколько лампочек там ставить? На мой взгляд, сам подход неверен, так мы обречены на "ловлю блох"
0
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
|
|
09.04.2015, 08:09 | 8 |
Про LED подсветку я не правильно сказал - я про подсветку стены за телевизором, а не подсветку матрицы.
Если этот пиксель - максимум по всей картинки, то да. Так как все остальные пиксели менее яркие, то он очень даже важный. А задача и так - ворох проблем. По сути задача - это поиск похожего изображения, обладающего некоторыми свойствами. Лампочка на картинке не будет точкой, а будет кругом (в самом простом варианте). "Установка" лампочки будет соответствовать тому, что на сфере в этом месте нарисован круг, а как с сферической карты круг перенести на обычную - это тоже еще нужно найти такое преобразование (но проблема не уникальна, в интернете материлы должны быть).
0
|
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
|
|
09.04.2015, 09:04 [ТС] | 9 |
Тупое решение: каждый пиксель = лампочка. Формально это совершенно корректно, ну правда на миллионы лампочек не хватит ресурсов Теперь допустим один пиксель ну очень яркий, напр в 100 раз ярче всех остальных. Но очевидно он никакой особой роли не играет (типа "один в поле не воин"), ну была общая интенсивность напр миллион, теперь еще +100, практической разницы нет
Это практическая задача (а не олимпиадная головоломка). Здесь может быть все что угодно, напр решение может оказаться простейшим. Или хорошо известным. Или его может не существовать вообще. Поэтому возможно "похожее изображение" здесь вообще ни при чем. Да и вороха может не оказаться
0
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
|
|
09.04.2015, 10:41 | 10 |
Вот поэтому я и определяю лампочку как пятно - поскольку это наиболее соответствует (в моем понимании) требованию пользователя.
Проводя предложенное мною преобразование мы получаем оценку предполагаемой яркости лампочки для каждой точки (координаты) рисунка. Яркость точек в преобразованном рисунке должна соответствовать среднему арифметическому от яркости точек исходного изображения взятых в области пятна от лампочки (с учетом прозрачности пятна, если такой параметр введен), поставленной по координатам точки преобразования. Добавлено через 16 минут Т.е. можно зайти с другой стороны. Выбираем какое будет пятно у лампочки, и используем такое пятно как маску размытия для исходного изображения. Ищем максимумы яркости и по найденным таким координатам ставим лампочку - вычитаем размытое пятно. Или тут все же нужна "маска четкости" ? Интересно, как будут отличаться результаты по обеим маскам.
0
|
7 / 7 / 2
Регистрация: 12.02.2012
Сообщений: 47
|
|
11.04.2015, 21:26 | 11 |
пикселы имеют не любые значения а именно (0..255) это просто формат например текстуры. на второй картинке это не яркость всей картины в 10 раз меньше, а как будто фоточувствительность изменена, как настроена на светлый день на улице а снимается в помещении, окно как яркое было так и осталось, так и центр лампы на потолке. Про лампочки ничего не понял.
0
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
|
|
12.04.2015, 17:22 | 12 |
Есть тип "целое", он может быть 1 байт, а может и 2 и 4 и больше.
То же самое и с пикселями. Мы можем сказать что цвета пикселя - RGB, можем что CMYK, можем ограничить глубину цветов 8 битами, можем взять по 32 бита на цвет. Есть такие термины как "High Dynamic Range Rendering" в компьютерной графике и "High Dynamic Range Imaging" в фотографии, где точка в одном канале (цвете) занимает гораздо более чем 8 бит.
0
|
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
|
|
13.04.2015, 07:04 [ТС] | 13 |
Попробуйте задать вопрос(ы), постараюсь ответить
Не всегда, может даже редко. Чаще всего (и на приведенной картинке) пиксель хранится в 4 байтах. Остряки называют этот формат "ельфа" Однако это не более чем "эрудиция", с алгоритмами ... ну что-то совсем неважно
0
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
|
|
13.04.2015, 09:20 | 14 |
Судя по размеру - очень похоже на 8 бит с альфа каналом, если, конечно, это не какой-нить YUV с повышенной глубиной одного из каналов.
А ты все же попробуй такую эрудицию воплотить, даже в самом простом виде, и посмотри - похоже ли на то что нужно или нет.
0
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
|
|
13.04.2015, 10:36 | 15 |
В вложенной картинке демонстрация простого алгоритма, написанного за 10 минут, с квадратными лампочками.
0
|
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
|
|
13.04.2015, 12:58 [ТС] | 16 |
Помещать лампочки в самые яркие места нужно, но неверно ставить ставить их только туда. С Вашей расстановкой легко найдется место не освещаемое ни одной лампой. Там будет совсем темно, а посмотрите на первую картинку - такого быть не должно, "везде много света" (что впрочем совсем не значит "амбиент").
Лучше исходить из "энергетических" соображений. Напр опять есть пиксель с яркостью 100. И есть квадратик 10х10 в котором яркость всех пикселей 1.0. По "энергии" эти пиксель и квадратик одинаковы. Не по теме: Дедушка считает официальный тон одним из признаков профессионализма, поэтому игнорирует тыкалок. Только потому что Вы потратили свое время на пример, дедушка ответил. Но в след раз он замолчит
0
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
|
|
13.04.2015, 18:29 | 17 |
Если лампочки маленькие и их мало, то приходится выбирать значимые места на картинке. Поскольку прочих явных условий кроме количества лампочек нет - играем в телепата.
Я как раз, по сути, это и использовал - оценивал яркость внутри окна по маске с размером лампочки (сдвигал на 1 пиксель каждый раз). В какой-то мере это похоже на размытие по маске, о чем я и говорил ранее. В том числе это (мне) напоминает преобразование Хафа. Возможно, картинка была не достаточно удачной, да и следовал я такому алгоритму весьма приблизительно - например, вычитал яркость квадрата, а не его отображения.
0
|
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
|
|
14.04.2015, 13:20 [ТС] | 18 |
Есть их интенсивность, сказано что они точечные. Может внимательнее прочитать условие, тогда и телепатия не понадобится Как-то Вы совсем не поняли идею "светового окружения" и делаете с точностью до наоборот. Пример: мы находимся в комнате, на потолке например 4 источника света. Нужно описать это 10 лампочками. Как бы человек это делал руками: по одной на источник и по одной на каждую стену, плюс 2 на пол и потолок. При этом интенсивность ламп что стоят на источниках заметно выше, оттуда идет намного больше света. Заметьте что стена(ы) могут и не иметь никаких пятен, зато они имеют значительную площадь которая излучает. Что бы делал человек имея в запасе еще 10 ламп? Вероятно разместил бы их еще на стенах, т.к там больше площадь, а источники на потолке маленькие, они и так хорошо описываются единичками. Чего он хочет добиться ясно - чтобы везде был свет.
А Вы где-то прочитали/применили "пятна" и лепите их к любой задаче
0
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
|
|
14.04.2015, 15:13 | 19 |
Ну не точки на картинке же они, для меня это скорее как "omni" - всенаправленный источник, который, в общем случае, оставляет пятно с яркостью, уменьшающуюся с расстоянием (до источника).
Нет, придумал специально для вашей задачи, сей подход нигде ранее не использовал (только некоторые отдаленно схожие). В частности, в сильно упрощенном случае, можно считать что источник света на плоскости оставляет пятно. Вот и леплю, поскольку это очень похоже на решение, пусть и в минус первом(или даже третьем) приближении. Ну, комната со стенами и обстановкой - это, конечно,хорошо, но это нам все не известно по условию. Нам дана поверхность сферы с картинкой, и источники света нужно расставлять на картинке, а значить на поверхности сферы. Без учета стен и всего. Нет, я понял вашу мысль о изначальном освещение, мне непонятны конкретные моменты по учету светимости ламп, которые мы расставляем для повторения картинки. Что ж, мои "пятна" для очень особого любителя, это понятно. Но, в таком случае, можете ли вы описать как изменится полностью черная картинка если на сферу положить один единственный источник света? Как изменятся точки на картинке? Пусть даже мы будем считать что картинка не на сфере, а на плоскости, для простоты вычислений.
0
|
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
|
|
14.04.2015, 17:15 [ТС] | 20 |
Не по теме: Пока не забыл: хранение "больших" значений в 4 байтах - см RGBE Приятно слышать что сами придумали! Молодежь нынче уж очень прагматична (а по-простому говоря - глупая и жадная), все тянут из гуглы, причем не думая, тупо копируют. На мой взгляд, минус "пятна" в его локальности, т.е. нет общей, интегральной оценки. Ну вот Вы нашли максимум и как-то выделили пятно (детали опускаем). Но чего оно "весит" и сколько лампочек на него потратить - неизвестно, это зависит и от мощности/энергии которая находится вне пятна. Это и не должно быть понятно. Основная проблема - точечный источник света (напр omni) очень далек от распределенного источника (area light). И чем больше площадь которую описали точечным источником - тем это заметнее, в первую очередь по теням. С др стороны Area Light - это практически неизбежный raytrace с очень, очень многими вытекающими (особенно в анимации). Поэтому желание юзера иметь пусть примитивную, но надежную и простую фишку 100% законно. А вот как это сделать - дело программиста, никто ему разжевывать ничего не будет. Это практика, жизнь Если "остальная полностью черная" - то это легкий, приятный случай, все лампочки сосредоточены в ярком пятне, остальное ноль энергии - ну значит и ни одной лампочки. Но вот если остальное "не совсем черное" - это мерзкий частный случай. Придется описывать слишком большие площади слишком малым числом лампочек - попрут дефекты
0
|
14.04.2015, 17:15 | |
14.04.2015, 17:15 | |
Помогаю со студенческими работами здесь
20
Найти скорость светового зайчика Датчик положения светового пятна Амплитуда светового вектора. Дифракция Френеля Определить диаметр светового пятна на экране Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |