2015-07-21 4 views
2

С камерой внутри цилиндра я захватываю изображение. Я хочу преобразовать это изображение в плоскость 2d. Изображение внутри цилиндра имеет много точек, которые образуют сетку.Проецирование изображения изнутри цилиндра в плоскость 2D [Matlab]

enter image description here

То, что я пытался сделать, было оценить трансформацию. При анализе blob я могу определить центр каждой точки и получить координаты в пикселях. Я сохраняю это в матрице под названием ImCilynder. После этого я создаю матрицу с координатами тех точек в плоскости с именем Im2d.

рассчитать преобразование (H), решая уравнение:

Imcilynder * H= Im2d; 

H= matrix [9x1] 

H=pinv(Imcilynder) * Im2d 

Но, когда я делаю тест с теми же точками, результат является абсолютно случайным, так что я делаю что-то неправильно.

Есть ли лучший способ решить эту проблему? Вы можете мне помочь?

Объясняя лучше,

Я пытаюсь найти преобразование, которое преобразует изображение выше этого изображения: enter image description here

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

После вычисления матрицы преобразования. Я ожидаю умножить первое изображение на матрицу преобразования и получить точки в плоскости. Или умножить координаты центра черных точек и получить координаты этих точек на плоскости. Возможно ли это?

Большое спасибо,

Афонсу

+1

Я не уверен, может ли линейная трансформация описать это из cilinder2plane. Интересно, однако. –

+0

Seconding Ander Biguri, это определенно не линейная трансформация. –

+0

Возможно, связано: http://stackoverflow.com/questions/7981815/projection-of-a-plane-onto-a-cylinder –

ответ

1

Ну, что лет хотят иметь в самолете? круги, образующие сетку? Поскольку, если это так, вам нужно удалить радиальное искажение, такие модели представлены некоторыми параметрами, между прочим, нелинейны. Может быть, если вы можете найти очень хороший алгоритм, вы собираетесь получить что-то вроде этого:

enter image description here

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

enter image description here

Есть пути, это не является тривиальной задачей, существует много исследований, о сложных преобразованиях, конечно, если вы хотите автоматически получить преобразование. В противном случае вы можете использовать фотошоп;).

+0

Спасибо за ответ, он многое объяснил.У меня очень низкий опыт в алгоритмах проектирования/преобразования, поэтому я немного потерял эту тему. Как вы получили первое изображение? Вы сделали фотошоп? Я думаю, если бы вы могли объяснить мне, как вы получаете первое изображение, оно решает мою проблему. Однако идеальным решением было вычисление преобразования с использованием вашей второй идеи. У вас есть сайты, которые вы можете мне дать о второй идее с помощью эластичных преобразований? Спасибо, Afonso – Afonso

+0

Ну, я предположил первое изображение, как я себе представлял, как радиальное преобразование может повлиять на исходное изображение. Но если вас интересует процесс регистрации изображений, вы можете начать с [этого] (http://www.sciencedirect.com/science/article/pii/S0262885603001379), у вас может быть первое представление о том, что такое регистрация изображений и если это может быть полезно для вашего приложения. Несмотря на то, что эластичная регистрация немного сложнее, вы можете посмотреть [это] (http://www-sop.inria.fr/asclepios/Publications/Tommaso.Mansi/mansi10IJCV.pdf). –

+0

Здравствуйте, снова, Я читал ссылки, которые вы мне дали, но я действительно нуб в этой теме и все, что я пробовал, не смог, ты можешь мне помочь? Я попытался реализовать это: http://www.mathworks.com/help/images/point-mapping.html – Afonso

 Смежные вопросы

  • Нет связанных вопросов^_^