2D изображения в 3D вид - PullRequest
1 голос
/ 12 марта 2012

Мне нужно иметь возможность генерировать трехмерную перспективу из набора двухмерных изображений трубы.

В основном ... Мы написали программное обеспечение, которое интерпретирует объединенные данные от лазерных и сонарных блоков, чтобы дать намсрез изображения с разреза трубы.Эти устройства проходят через трубу и сканируют внутреннюю часть трубы через каждые 100 мм.Все это работает отлично.Теперь мой клиент хочет взять все эти кусочки 2D-изображения и сгенерировать 3D-вид, чтобы они могли «путешествовать» по трубе, просматривая дефекты и т. Д., Которые обнаруживаются при сканировании.Мы можем видеть дефекты в 2D-изображениях, но в одной проверке могут быть сотни изображений - отсюда требование иметь возможность просматривать канал.

Я делаю это в VS2010 на .NET 4Платформа на C #.

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

Любая помощь приветствуется:)

Майк

Ответы [ 3 ]

0 голосов
/ 12 марта 2012

Попробуйте начать с очень простого 2d вместо полноценного рендеринга 3D - может быть достаточно.Труба, когда вы смотрите на нее изнутри, может быть представлена ​​в виде нескольких трапеций.Предполагая, что ваши изображения представляют собой небольшие цилиндрические участки трубы - сопоставьте каждую полосу с трапециями (4 будет хорошим началом - легко расположить) и начертите, чем по круговой схеме.Таким образом, вы можете нарисовать несколько полос одновременно.Для перемещения назад / вперед - просто переназначьте изображения на трапеции.

Если вам нужно полное 3D - подумайте, сработает ли WPF, если нет - XNA или какая-нибудь библиотека OpenGL предоставят вам полное 3D.

0 голосов
/ 12 марта 2012

Вы не указываете контекст, интервалы выборки 100 мм могут быть редкими (труба 1 м) или подробными (труба 10 км). Также вы не указываете количество точек выборки (количество поперечных сечений и размер изображения поперечного сечения).

Простой способ показать данные - использовать воксели, где каждый пиксель на поперечном сечении рассматривается как куб, а смежные образцы образуют смежные кубы (вспомните Minecraft). Результат будет выглядеть блочным, но, поскольку это инженерное / научное приложение, это, вероятно, предпочтительнее. Интерполяция модели для получения гладкой поверхности может скрывать дефекты или создавать дефектные участки. Кроме того, рендеринг поперечного сечения через воксель немного проще, чем поверхность многоугольника.

0 голосов
/ 12 марта 2012

Ну, каждые 10 см не очень детализированы. Однако вам нужно отсканировать пиксели трубы, создав список замкнутых многоугольников, а затем просто использовать треугольную полоску, чтобы соединить один набор с другим, вплоть до конца. труба.

...