Наложение эффекта структурированного стекла на изображение с камеры iPhone — общие указания

В настоящее время я пытаюсь написать приложение, которое могло бы показать эффекты стекла, видимые через камеру iPhone. Я говорю не о простом однородном стекле, а о таком стекле: Glas Image

Теперь я уже разбил это на две проблемы:

1) Примените фильтр изображения к 2D-кадрам, представленным камерой iPhone. Это было сделано и кажется возможным, например. в приложении: faceman

2) Мне нужно получить индивидуальные световые свойства листа стекла, который мне поставляет мой клиент. По сути, должен быть способ прочитать информацию о том, как стекло искажает и искажает изображение. Думаю, можно было бы как-то сделать картинку пластины из стеклопластика в высоком разрешении, наложенную на шахматную доску-изображение и как-то это проанализировать.

Теперь я в основном ищу литературу, веб-ссылки о том, как вы, ребята, думаете, я мог бы начать с 2. Это не должно быть точным, в конце концов мне просто нужно что-то, что выглядит примерно как лист стекла, который я хочу показать. . И я даже не знаю, где искать книги по физике, фильтрации изображений или компьютерной фотографии.

РЕДАКТИРОВАТЬ: в настоящее время я думаю, что одним из простых решений может быть рельефное отображение текстуры поверх камеры. Я задал еще один вопрос по этому здесь.


person Bersaelor    schedule 08.03.2011    source источник


Ответы (2)


Вам нужно начать с OpenGL. Вы хотите получить текстуру, похожую на ту, что у вас выше, — сместите текстуру под ней (вид с камеры в реальном времени), чтобы создать впечатление глубины и искажения. Это «нетривиальная» проблема, поскольку она является довольно стандартной проблемой в своей области, если вы работаете с фоном без графики или OpenGL, вы можете ожидать очень крутой кривой обучения.

Короче говоря, единственный способ добиться этого на iOS — это использовать OpenGL, и это должно быть вашей отправной точкой. У Apple есть несколько руководств по этому вопросу, но вам лучше поискать в другом месте. Есть несколько полезных книг, таких как «Руководство по программированию OpenGL ES 2.0», которые могут направить вас на правильный путь, но с чего начать, будет зависеть от того, насколько вы знакомы с 3D-графикой и C.

person lxt    schedule 08.03.2011
comment
Я знаю OpenGL, но не думаю, что 3D-текстуры помогут. С математической точки зрения это проблема фильтрации, когда мне нужно изменить пиксели в 2D-изображении A, чтобы сформировать новое 2D-изображение B. В любом случае основной вопрос касается проблемы B), а не A). (И B не имеет ничего общего с OpenGL) - person Bersaelor; 09.03.2011
comment
Вы делаете ошибку, полагая, что OpenGL - это только 3D-графика. Это не так. Это единственный способ добиться высокой производительности работы с текстурами на iOS. Вы не сможете добиться этого с помощью Core Graphics или любого графического API, отличного от Open GL, на iOS, потому что ничто не является достаточно быстрым. Core Image не поддерживается, поэтому вы не можете использовать фильтр Core Image. OpenGL решает обе части вашего вопроса. Вторая часть вашего вопроса на самом деле не имеет отношения к iOS, но то, что вы сделали бы, — это точно такой же метод, который вы использовали бы для определения искажения объектива на камере. - person lxt; 09.03.2011
comment
Извините, я думаю, мы неправильно поняли друг друга. Я сказал, что не думаю, что 3D поможет, но это не значит, что я не использую OpenGL. Штука в том, что я знаю OpenGL, вот только не знаю, где взять алгоритм, считывающий информацию гласса. - person Bersaelor; 11.03.2011

Просто хотел добавить, что я решил этот старый ответ, используя пример преломления в Khronos OpenGl ES SDK.

Написал об этом запись в блоге с фотографиями:

моделирование окон с преломлением

преломленное изображениеочистить изображение

person Bersaelor    schedule 29.06.2012