2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Параллельный перенос вокселей в matlab - как?
Сообщение09.04.2012, 21:54 


29/03/12
6
Всем привет!

Необходимо реализовать следующую задачу: покрыть вокселями (аналог пикселей в 3D) поверхность имланта, основание которого лежит в плоскости Oxy.
Идея была следующая: нарисовать над вершиной импланта плоскость, параллельную его основанию. Затем разбить ее на воксели. И, далее, применить параллельный перенос к каждому из получившихся кубиков. Проблема в том, что не ясно, как определить величину сдвига, знаю высоту кубика над плоскостью Oxy, но не зная соответствующую ему высоту импланта. К сожалению, нет формулы в явном виде задающей поверхность импланта.
Как вариант, была мысль определить высоту точек импланта на основе их цвета, т.к. он, как известно, пропорционален высоте. Но нет конкретных идей, как это реализовать...
Буду очень благодарна за любые идеи, подсказки, мысли, т.к. задачу важно реализовать в кратчайшие сроки!
Заранее большое спасибо за помощь!!!

-- 09.04.2012, 21:56 --

Хотела прикрепить картинку по результатам на данный момент, но почему-то не получается :-(

 Профиль  
                  
 
 Re: Параллельный перенос вокселей в matlab - как?
Сообщение10.04.2012, 09:26 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
Inesska, когда Вы прошлый вопрос задавали, как найти объём импланта, там как-то всё было понятно, а здесь что-то ничего не понятно.
Картинку здесь непосредственно разместить нельзя, а надо сделать так. Зайдите на сайт, вроде radikal.ru, загрузите туда со своего компьютера картинку. Вам там в окошке высветится ссылка. Эту ссылку вставляете в сообщение и окружаете тэгом img. И будет картинка.

 Профиль  
                  
 
 Re: Параллельный перенос вокселей в matlab - как?
Сообщение10.04.2012, 09:53 


29/03/12
6
svv

Изображение-вот картинка.
Спасибо за подсказку.

Мне нужно как бы ссыпать эти воксели на поверхность импланта так, чтобы они ее равномерно покрывали.

 Профиль  
                  
 
 Re: Параллельный перенос вокселей в matlab - как?
Сообщение10.04.2012, 13:24 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
Два вопроса:
1) а нельзя ли каждый воксель сопоставить треугольнику на поверхности?
2) в каком-то виде у Вас информация о форме импланта есть? ну, например, список этих поверхностных треугольничков с координатами их вершин.

 Профиль  
                  
 
 Re: Параллельный перенос вокселей в matlab - как?
Сообщение10.04.2012, 16:43 


29/03/12
6
Да, информация о форме импланта есть: в виде obj-файла, т.е. представлена матрицей координат вершин треугольников и матрицей индексов вершин, которые эти треугольники образуют.
Я думала о том, чтобы сопоставить каждый воксель треугольнику на поверхности, но все-таки не совсем представляю, как это можно сделать... Ведь координаты вершин кубиков не обязаны совпадать с координатами вершин треугольников...
Не знаю, можно ли в matlab по цветовой проекции поверхности (импланта) на плоскость Oxy определить соответствующую координуату z. Тогда, в зависимости от того, в какую цетовую область попадает проекция вокселя, можно было бы определить высоту, на который его надо переместить.

 Профиль  
                  
 
 Re: Параллельный перенос вокселей в matlab - как?
Сообщение10.04.2012, 22:22 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
Вот если бы можно было, имея эти матрицы, как-то просто отвечать на такой вопрос: "находится ли точка с заданными координатами внутри импланта или нет?".

Тогда разобъем всё пространство на кубики-воксели (получится такая бесконечная кубическая сетка с периодом, равным стороне вокселя). Из них возьмем те, центры которых находятся внутри импланта. А из этого множества выбросим внутренние, всё равно они не видны. Останутся только поверхностные воксели, что и требуется.

 Профиль  
                  
 
 Re: Параллельный перенос вокселей в matlab - как?
Сообщение11.04.2012, 01:30 
Заслуженный участник


28/04/09
1933
Я бы рекомендовал не заниматься велосипедостроением (если только это не является самоцелью, скажем, в рамках учебы), а использовать готовые решения. В частности, для Ваших задач (и этой, и предыдущей) подходит библиотека VTK (Visualization Toolkit), используемая для научной визуализации данных. Она применяется также и в сфере медицины. Полностью бесплатна, за плату предоставляется лишь документация и поддержка (без которых можно обойтись при умении читать по-английски и пользоваться поисковиками). Библиотека реализована на C++, но имеет интерфейсы для Tcl, Python и Java (если не ошибаюсь, существует и wrapper для C#).
Задача по нахождению характеристик (в частности, объема) замкнутой поверхности (представлемой треугольной сеткой) решается с помощью класса vtkMassProperties.
Вокселизация объема, заключенного в замкнутой поверхности (представлемой треугольной сеткой), осуществляется с помощью класса vtkVoxelModeller (на официальной wiki есть пример, в котором вокселизируется сфера, а затем производится визуализация получившегося объекта). Оставить в получившемся наборе вокселей только те, которые образуют "приповерхностный слой" можно в рамках одного цикла и за линейное время.

 Профиль  
                  
 
 Re: Параллельный перенос вокселей в matlab - как?
Сообщение14.04.2012, 16:02 


29/03/12
6
Спасибо большое за информацию про VTK, но данная задача действительно является самоцелью в рамках курсовой.

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

Поэтому, как вариант, хочу заменить имплант уравнением полусферы. Тогда можно будет определить расстояние, на которое требуется переместить воксель, как координату z точки пересечения кубика с полусферой при параллельном переносе. Подскажите, пожалуйста, как в matlab задается полусфера фиксированного радиуса в декартовых координатах?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group