2015-05-12 4 views
-1

У меня есть стопка изображений эллиптического цилиндра. Внутри цилиндра есть несколько «точек»/семян важности. Я вычислил эвклидовое расстояние между ними и ближайшим соседом. Мой следующий шаг - сделать диаграмму voronoi и рассчитать объем каждой ячейки voronoi.Как ограничить вычисления voronoi в Matlab?

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

Любые идеи?

Спасибо заранее,

Yotam

+0

Что вы подразумеваете под «ничьей»? Вы хотите графически построить 3D-объем? но как бы вы «выполнили некоторые вычисления» на этой цифре? –

+0

Извинения за неопределенность. В принципе, у меня есть стопка изображений эллиптического цилиндра. Внутри цилиндра есть несколько «точек»/семян важности. Я вычислил эвклидовое расстояние между ними и ближайшим соседом. Мой следующий шаг - сделать диаграмму voronoi и рассчитать объем каждой ячейки voronoi. И теперь, наконец, к моей проблеме, мне нужно определить пространство/пределы этого эллиптического цилиндра, чтобы учитывать при вычислении диаграммы ворона и я не уверен, как это сделать ... Я должен был сказать это раньше. Мои извинения. –

+0

, возможно, вы захотите опубликовать код, который у вас уже есть –

ответ

0

Во-первых, давайте начнем с некоторого контекста угадывание:

Matlab MuPAD для символьных вычислений. Я не понимаю, почему вы думаете, что вам понадобится это ничья ничего?

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

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

Я рекомендую поверхность (участки меш) http://nl.mathworks.com/help/matlab/ref/surface.html

но на самом деле предыдущий вопрос в здесь показано, как вручную построить трехмерный цилиндр: Cylinder with filled top and bottom in matlab

Обратите внимание, что уравнения для цилиндра выражаются непосредственно в функции, что позволяет вам изменять его!


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

+0

Справедливо, lol. Готово! Благодарю. –

0

Как это будет зависеть от того, сможете ли вы работать на срезах отдельно или если вам нужно действовать на том в целом.

В первом случае это будет намного проще, если ваш цилиндр будет выровнен с любой из осей. Затем вы можете использовать уравнение эллипса поперечного сечения для определения границы в поперечной плоскости, которую вы можете применить ко всем срезам. Это позволит вам делать что-то в пределах плоскости, например, проверять точки на внутреннюю/внешнюю сторону, маскировать изображение. Я не могу догадаться, как это может взаимодействовать с диаграммой Вороного, кроме исключения внешних точек, но похоже, что это представляет эллипс/цилиндр, что является основной проблемой.

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

Если вы намереваетесь работать с томом, то вы делаете то же самое, но в другом порядке (это зависит от того, для чего вы его используете): как только вы вычислили пересечение между данным изображением и цилиндр, тогда вы можете сначала применить маску или границу к каждому срезу, а затем нарисовать диаграмму Вороного.

Главное, чтобы избежать представления цилиндра в виде 3D-объекта: это возможно даже без символических математических вычислений, но оно сложное, и поскольку ваш набор данных, естественно, упорядочен как кусочки, было бы самым последовательным разрезать ваш цилиндр , эллипсы гораздо более компактны, чем цилиндр.

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

+0

Спасибо за ответ! Поскольку я совершенно новичок в Matlab, мне было легче получить координаты центроидов (в xyz) точек вручную (используя Metamorph). Затем я вычислил эвклидовое расстояние между ними и ближайшим соседом в Матлабе. Мой следующий шаг - сделать диаграмму voronoi и рассчитать объем каждой ячейки voronoi, и именно там я застрял в основном (я должен был быть более ясным. Мои извинения). У меня был слабый успех в создании диаграммы voronoi (хотя я уверен, что это не сложно), но я не знаю, как определить его пределы в пространстве. –

+0

Я просто не уверен, какие координаты мне требуются (длины осей, я думаю?). –

+0

Существует функция 'voronoin', которая вычисляет диаграмму n-D voronoi, и вы можете использовать' convhulln' для получения томов ячеек, но трюк состоит в том, чтобы сначала перенести ваши данные в правильный формат. См. Http://uk.mathworks.com/help/matlab/ref/voronoin.html и посмотрите, можете ли вы приспособить примеры к вашим потребностям. Попробуйте это без ограничения и посмотрите, что результаты, вы можете обнаружить, что вы можете применить границу к диаграмме voronoi и/или соответствующие ячейки после их появления. – xenoclast

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