- MAGAZKA
- Комната смеха
- Как делаются зеркала для комнаты смеха?
- Комната смеха во времена пандемии COVID-19
- Теория формирования изображений
- Как всё это работает?
- Создание виртуальной камеры
- Определение кривой поверхности (зеркала)
- VCAM: виртуальная камера
- Отражение изображения
- Идите вперед и создавайте свои собственные зеркала, поделитесь ими со своими близкими и раскрасьте положительными эмоциями утомительные дни дистанционного обучения в режиме самоизоляции
MAGAZKA
новая версия программы MAGAZKA & MAGAZKA (NS)
Комната смеха
фотографирования используя Ваш монитор.
Тебя снимает скрытая камера
Всегда помни — ты не один !
Вот сейчас ты здесь читаешь,
В твоей компании есть проблемы ? Знаешь как их решить ?
Смотри и учись, потом спасибо скажешь.
Сексом тоже нужно уметь заниматься
Сын спросил отца
— Папа, Ferrari,это красная машина с конем ?
Доказано — мы во Вселенной не одни.
У нас есть братья и сестры по разуму.
не отпускайте в Африку гулять.
В Африке большие.
И в сексе есть формулы.
Не знал, тогда тебе сюда.
Вы не поверите, своими руками !
Красивый карточный фокус
На что способен твой мозг ?
Хочешь узнать, жми давай.
столько много последствий
от аварии на мотоцикле ?
На что способен человеческий глаз.
Если тебе понравилась эта страница.
пошли ссылку своим друзьям, поделись с ними настроением,
улыбкой и радостью -сделай им и мне приятно.
Спасибо. Tatitutu
Источник
Как делаются зеркала для комнаты смеха?
Каждому из нас с детства знаком такой аттракцион, как комната смеха. Все помнят, сколько веселья вызывали деформированные отражения с комично вытянутыми или укороченными конечностями и головами. Наверное, каждый посетитель хоть один раз задумывался, откуда же берутся эти веселые кривые зеркала? Существует мнение, что для этой забавы используются бракованные зеркала, хотя это не совсем верно: зеркало для комнаты смеха должно быть не просто кривым, но и «правильным».
Правильное зеркало для такого аттракциона — деформирующее и искажающее отражение так, чтобы это было действительно смешно, специально изготовляется специалистами в зеркальных мастерских. Обычное зеркальное полотно изготовляется путем нанесения на одну сторону стеклянной пластины тонкого слоя напыления из серебра или другого металла. Искривление зеркала — это трудоемкий процесс, который должен строго контролироваться.
Основной способ изготовления кривого зеркала — так называемое моллирование. Для этого в специальную печь ставится рамка в форме будущего зеркала с небольшим отступлением вовнутрь. На рамку кладется стекло, после чего печь закрывается, и постепенно нагревается до нужной температуры. При нагреве стекло постепенно изгибается, нужный изгиб ему придает вышеупомянутая рамка. Как только стекло примет нужную форму, печь выключают и оставляют остывать.
На втором этапе специалисты зеркальной мастерской наносят на искривленное стекло напыление с помощью устройства, которое называется вакуумной камерой. После чего стекло помещают в камеру, где алюминий, испаряясь, оседает на стекле, которое постепенно превращается в выпуклое или вогнутое зеркало.
Весь процесс изготовления кривых зеркал требует высокой точности, контроля и высокой квалификации мастера — во-первых, стекло не должно треснуть или лопнуть. Также оно не должно деформироваться больше, чем нужно, в таком случае эффект искривления отражения будет совсем не тот.
За изготовление зеркала для комнаты смеха возьмется не каждый специалист — для этого нужен опыт, четкое знание технологии и высокая квалификация мастеров.
Настоящие, качественные и действительно смешные зеркала для аттракционов изготавливаются только в зеркальных мастерских, оснащенных самым новым оборудованием – несмотря на кажущуюся простоту, изготовить нужно не просто вогнутое или выпуклое стекло, а зеркало, которое доставит радость и положительные эмоции – а это уже целое искусство.
Источник
Комната смеха во времена пандемии COVID-19
Люди моего поколения ещё помнят то замечательное время, когда в каждом городском парке обязательно была комната смеха. Впервые в комнату смеха я попал году в 66-67 прошлого века на ВДНХ (Выставка достижений народного хозяйства, г. Москва) и с тех пор ни одна семейная прогулка в парке из моего детства не обходилась без этого развлечения. Конечно, весело было посмотреть на себя, но особенно на старших, как они молодели, становясь стройными и подтянутыми. Долго там делать нечего, но минут 15-20 безудержного, до слёз, смеха обеспечено.
С возрастом, конечно, беззаботность проходит. Примерно так, как в этой песне ансамбля «Ариэль»:
А в последнее время уже и не припомню, когда видел подобную комнату, представляющую собой небольшой павильон એ с развешенными на стенах огромными, в человеческий рост, кривыми зеркалами. Видать старые побились, а новые не делают — дорого в стекле. Почему кривыми? Потому что зеркала были не плоскими, к которым все привыкли в ванной, а изогнутыми самым невероятным образом, ну, естественно, не свёрнутыми в трубочку. Вот именно эта кривизна и обеспечивает то отражение собственного «Я», которое у индивида с нормальной психикой вызывает массу положительных эмоций. У людей же с не здоровой психикой положительная реакция на своё искажённое изображение возникает не всегда, а наблюдать в такой комнате поведение животных, кошек и собак, особенно забавно… В их маленьких мозгах явно возникает когнитивный диссонанс, что является ярким свидетельством их сообразительности.
Навеяло, однако. А нельзя ли создавать собственные кривые зеркала, опираясь на современные информационные технологии, немного кодируя на Python и зная о существовании OpenCV? — Легко, и в этом уроке вы узнаете, как это сделать.
Если всё внимательно прочитаете и отрепетируете приведенные здесь скрипты, то сможете наслаждаться подобными забавными эффектами у себя дома, не пытаясь найти по близости «Комнату смеха», что абсолютно соответствует режиму самоизоляции, продолжающегося уже четвёртую неделю, месяц, одним словом. Цифровая версия кривых зеркал с OpenCV сделана на основе проекта VirtualCam и авторского проекта Kaustubh Sadekar FunMirrors .
«Записки преподавателя» читает большинство моих студентов, поэтому один из мотивов создания урока — необходимость показать, как абстракции математики тесно связаны с реальностью и могут приносить вполне ощутимую пользу, как формулы могут разнообразить нашу жизнь и приносить массу положительных эмоций. К концу урока вы сможете оценить этот факт, понять, что можно создать что-то действительно интересное, имея четкое представление об основах математической теории. В общем, пусть учебный отдел считает это конспектом дистанционной лекции в рамках дисциплины «Программирование».
Теория формирования изображений
Чтобы понять механику проецирования трехмерной точки из мировой системы координат в кадр изображения камеры, рекомендую предварительно прочитать мои предыдущие статьи Геометрия формирования изображений и Калибровка камеры с использованием с OpenCV.
Прочитали? — Теперь вы знаете, что уравнения, которые связывают трехмерную точку (X_w, Y_w, Z_w) в мировой системе координат с её проекцией в координатах изображения (u, v) , выглядят следующим образом:
Где \mathbf
— матрица проекции размером 3 × 4 , состоящая из двух частей: 1) внутренней матрицы \mathbf
\mathbf
= \mathbf
Как всё это работает?
Весь наш проект можно разделить всего на три основных части:
- Создание виртуальной камеры.
- Создание кривой (зеркальной) поверхности и проецирование на неё виртуальной камеры с использование подходящей математической абстракции — матрицы проекций.
- Используя сетку и координаты проецируемых точек на кривой поверхности, деформируем изображение для получения желаемого зеркального эффекта.
Надеюсь, рисунок поможет вам понять это лучше.
Рисунок 1: Этапы создания смешного цифрового зеркала. Создание кривой поверхности, т.е. зеркала (слева), фиксирующее плоскость в виртуальной камере для получения соответствующих 2D‑точек, используя полученные 2D‑точки для применения деформации на основе сетки к изображению, которое создает эффект, похожий на кривое зеркало.
Если вы всё ещё ничего не поняли, не огорчайтесь. Далее каждую часть объясню подробно.
Создание виртуальной камеры
Основываясь на вышеупомянутой теории, мы четко знаем, как 3D‑точка в мировой системе координат связана с соответствующими координатами изображения.
Что же такое виртуальная камера и как делать снимки с этой виртуальной камерой?
Виртуальная камера — это, по сути, матрица P , которая описывает связь между трехмерными мировыми координатами и соответствующими пиксельными координатами изображения. Посмотрим, как мы можем создать свою виртуальную камеру с помощью Python.
Сначала создадим матрицу внешних параметров M1 , матрицу внутренних параметров K и используем их для создания матрицы проекции камеры P .
Обратите внимание, что необходимо устанавливать нужные значения для всех параметров focus , sx , sy , ox , oy и т.д.
Итак, как мы сможем захватить изображения с помощью этой виртуальной камеры?
Для начала предположим, что исходное изображение или видеокадр есть плоскость в 3D. Конечно, мы понимаем, что сцена на самом деле не является плоской, но у нас нет понимания глубины каждого пикселя изображения. Здесь мы просто делаем допущение, что сцена плоская, постольку-поскольку наша цель состоит не в точном моделировании кривого зеркала для научных исследование. Мы просто хотим немного развлечься.
После такого допущения мы можем просто умножить матрицу P на мировые координаты и, таким образом, получить координаты пикселей (u,v) . Применение этого преобразования аналогично захвату изображения из трехмерных точек с помощью нашей виртуальной камеры!
А как мы решим вопрос с цветом пикселей в нашем захваченном изображении? А как насчет свойств материала объектов в сцене?
Всё вышеперечисленное определенно важно при рендеринге реалистичной 3D‑сцены, но нам не нужно рендерить реалистичную сцену. Мы просто развлекаемся.
Все, что нам нужно сделать, это захватить исходное изображение или видеокадр и представить его в виде трехмерной плоскости виртуальной камеры, а затем спроецировать каждую точку этой плоскости на кривую поверхность зеркала, используя матрицу проекции.
Как нам это сделать? Наивно было бы использовать цикл for и ещё один вложенный в него цикл for по всем точкам для этого преобразования. Такие вычисления в Python слишком накладны.
Поэтому, для подобных вычислений будем использовать numpy . Возможно, вы знаете, что numpy позволяет выполнять векторизованные операции и устраняет необходимость использования циклов. Такие вычисления очень эффективны в сравнении с вложенными циклами for .
Таким образом, мы будем хранить трехмерные координаты в виде числового массива W , сохранять матрицу камеры в виде числового массива P и выполнять умножение матрицы P \times W для захвата трехмерных точек.
Перед тем, как написать код захвата трехмерного изображения с помощью виртуальной камеры, необходимо определить кривую поверхность для моделирования зеркала.
Определение кривой поверхности (зеркала)
Для определения кривой поверхности формируем сетку из координат X и Y , а затем вычисляем координату Z как функцию от (X, Y) для каждой точки. Следовательно, для поверхности зеркала мы определим Z = K , где K — любая постоянная. На следующих рисунках показаны примеры некоторых зеркальных поверхностей, которые можно создавать.
Рисунок 2: Некоторые примеры кривых поверхностей, которые можно использовать для создания забавных зеркал
Теперь, когда у нас есть четкое представление о том, как определить кривую поверхность и захватить ее на нашей виртуальной камере, давайте посмотрим, как ее кодировать на python.
Именно так мы создаём кривую поверхность для имитации кривого зеркала.
VCAM: виртуальная камера
Нужно ли писать вышеприведённый код каждый раз, когда мы захотим создать новое кривое зеркало? Что если надо динамически изменить некоторые параметры камеры? Для упрощения задачи создания кривых поверхностей, определения виртуальной камеры, установки всех параметров и нахождения их проекции, обратимся к библиотеке python под названием vcam . В документации можно найти множество иллюстраций различных способов использования этой библиотеки, что облегчает создание виртуальных камер, определяя 3D‑точки и находя 2D‑проекции. Кроме того, эта библиотека заботится о настройке подходящих значений внутренних и внешних параметров и обрабатывает различные исключения, что делает её простой и удобной в использовании. Инструкции по установке библиотеки также находится в указанном репозитории.
Для установки библиотеки используйте pip .
Вот как вы можете использовать библиотеку для написания кода, который работает аналогично коду, который мы написали до сих пор, но всего несколькими строками.
Можно легко увидеть, как библиотека vcam позволяет легко определять виртуальную камеру, создавать 3D‑поверхность и проецировать на неё захваченное изображение.
Теперь проецируемые 2D‑точки можно использовать для отражения на основе сетки. Это последняя часть создания нашего кривого зеркала.
Отражение изображения
Отражение — в нашем случае это создание нового изображения путем перемещения каждого пикселя входного изображения из его исходного местоположения на новое место, определенное функцией отражения. Таким образом, математически это записывается следующим образом:
Вышеприведенный метод называется переотражением вперед или деформированием вперед, где функции map_x и map_y дают нам новое положение пикселя, которое изначально было в (x, y) .
Что делать, если map_x и map_y не дают нам целочисленное значение для конкретной пары (x, y) ? Мы распространяем интенсивность пикселя в точке (x, y) на соседние пиксели, используя ближайшее целочисленное значение, что создает дыры в отражённом или результирующем изображении там, где пиксели, для которых интенсивность неизвестна и имеет значение 0. Как можно избежать такие дыры?
Используем обратную деформацию. Это значит, что теперь map_x и map_y предоставят нам старое положение пикселя в исходном изображении для заданного местоположения пикселя (x, y) в целевом изображении. Математически это выглядит так:
Круто! Теперь мы знаем, как выполнить переотражение. Чтобы создать забавный зеркальный эффект, мы будем применять переотражение к исходному входному кадру. Но для этого нам нужны map_x и map_y , верно? Как мы определяем map_x и map_y в нашем случае? Ну, мы уже вычислили наши функции отображения.
2D проецируемые точки (pts2d) , эквивалентные (u, v) в нашем теоретическом объяснении, являются желаемыми картами, которые мы можем передать функции переназначения. Теперь давайте посмотрим код для извлечения карт из проецируемых 2D точек и применения функции переотражения (деформации на основе сетки) для создания эффекта кривого зеркала.
Рисунок 3: Входное и соответствующее выходное изображение, показывающее эффект смешного зеркала на основе функции синуса
Потрясающе! Попробуем создать еще одно кривое зеркало с удлинением середины по вертикали. После этого вы сможете делать свои собственные кривые зеркала.
Рисунок 4: Входные (слева) и выходные (справа) изображения, показывающие эффект кривого зеркала, созданного с помощью приведенного выше кода
Итак, теперь, когда мы знаем, что, определяя Z как функцию от X и Y , мы можем создавать различные типы эффектов искажения. Давайте создадим еще несколько эффектов, используя приведенный выше код. Нам просто нужно изменить строку, в которой мы определяем Z как функцию (X, Y) . Это поможет вам создать ваши собственные эффекты.
Рисунок 5: Входные (слева) и выходные (справа) изображения, показывающие эффект искажения, созданный с помощью вышеупомянутой функции для координаты Z кривой поверхности
Давайте используем функцию sin !
Рисунок 6: Ввод и вывод изображений, показывающих эффект кривого зеркала
Входные (слева) и выходные (справа) изображения, показывающие эффект искажения, созданный с помощью вышеупомянутой функции для координаты Z кривой поверхности
Как насчет эффекта радиального искажения?
Рисунок 7: Ввод и вывод изображений, показывающих эффект кривого зеркала
Входные (слева) и выходные (справа) изображения, показывающие эффект искажения, созданный с помощью вышеупомянутой функции для координаты Z кривой поверхности
Источником вдохновлен этого урока является репозиторий FunMirrors созданный Kaustubh Sadekar. Там вы можете найти множество других интересных кривых зеркал. Однако, столкнувшись с некоторыми проблемами при создании своих кривых зеркал вам придётся применить знания математики и навыки творческого мышления для получения правильных решений. Количество различных зеркал, теперь ограничено только вашей креативностью и способностями визуализировать математику.
Идите вперед и создавайте свои собственные зеркала, поделитесь ими со своими близкими и раскрасьте положительными эмоциями утомительные дни дистанционного обучения в режиме самоизоляции
Комната смеха во времена пандемии COVID-19 , опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.
Источник