- У меня есть трехмерная геометрическая форма, которую я должен преобразовать в облако точек.
- Результирующее облако точек можно считать эквивалентным выходу точечного облака из лазерного сканирования объекта.
- Нет генерация сетки не neeeded
- Точка, сгенерированная может быть равномерно распределена, или могут быть просто случайным образом разнесены - не имеет значения
- Форма 3-D может быть представлена в виде 3-D математической формулы
- Это должно быть сделано с помощью MATLAB
ответ
трудно ответить без примера, но это звучит, как вы просто хотите выполнить montecarlo simulation?
Скажем, ваша форма определяется функцией f
и что у вас есть пределы X, Y, хранящиеся в двух векторных элементах, например. xlim = [-10 10], то есть все возможные значения x этой формы лежат между x = -10 и x = 10, тогда я бы предположил, что вы делаете f
, возвращаете какой-то код ошибки, если нет значения для конкретной пары x-y. Я собираюсь предположить, что это будет NaN
. Так f(x,y)
это функция, которую вы пишете, что либо возвращает z
, если он может или NaN
, если он не может
n= 10000;
counter = 1;
shape = nan(n, 3)
while counter < n
x = rand*diff(xlim) + mean(xlmin);
y = rand*diff(ylim) + mean(ylim);
z = f(x,y)
if ~isnan(z)
shape(counter, :) = [x, y, z];
counter = counter + 1
end
end
Таким образом, приведенный выше код будет генерировать 10000 (не уникальный, но это легко адаптировать для) точек случайным образом выборки по вашей форме.
Теперь после ввода этого я понимаю, что, возможно, ваша форма на самом деле не все, что большой и, возможно, вы можете равномерно попробовать его, а не случайным образом:
for x = xlim(1):xstep:xlim(2)
for y = ylim(1):ystep:ylim(2)
shape(counter, :) = [x, y, f(x,y)];
end
end
или если вы пишете f
быть векторизации (предпочтительно)
shape = [(xlim(1):xstep:xlim(2))', (ylim(1):ystep:ylim(2))', f(xlim(1):xstep:xlim(2), ylim(1):ystep:ylim(2));
, а затем в любом случае
shape(isnan(shape(:, 3), :) = []; %remove the points that fell outside the shape
Вот код для создания облачного изображения с изображением глубины с камеры PrimeSense.
вход/выход из этой функции:
-inputs
depth -depth map
topleft -topleft coordinates of the segmented image in the whole image
-outputs
pclouds -3d point clouds
MatLab код:
depth = double(depth);
% Size of camera image
center = [320 240];
[imh, imw] = size(depth);
constant = 570.3;
% convert depth image to 3d point clouds
pclouds = zeros(imh,imw,3);
xgrid = ones(imh,1)*(1:imw) + (topleft(1)-1) - center(1);
ygrid = (1:imh)'*ones(1,imw) + (topleft(2)-1) - center(2);
pclouds(:,:,1) = xgrid.*depth/constant;
pclouds(:,:,2) = ygrid.*depth/constant;
pclouds(:,:,3) = depth;
distance = sqrt(sum(pclouds.^2,3));
Edit: Этот источник из этой текущей статьи http://www.cs.washington.edu/rgbd-dataset/software.html
Вы можете найти некоторые другие функции Cloud в MatLab и C++, которые могут вас заинтересовать.
- 1. 3D Point Cloud Segmentation
- 2. Leap Motion point cloud
- 3. Triggers cloud sql 2nd generation
- 4. Удалить outlier в Point Cloud
- 5. Triangle mesh point cloud интерполяция
- 6. Визуализация проекта Tango Point Cloud
- 7. Libfreenect2 point cloud frame capture
- 8. Kinect Point Cloud Curved Walls
- 9. Отображение. Point Point Cloud в C# с помощью Helix-Toolkit
- 10. Point Cloud - Основные топоры - Использование инерции
- 11. threejs point cloud geometry rotation to itself
- 12. PCL OpenNI2Grabber получить Point Cloud без зрителя
- 13. Данные облака Point Cloud - источники обучения
- 14. point cloud librarby на visual studio 2012
- 15. Объединение карты глубины или слияние Point Cloud
- 16. Как слить Point Cloud Кластер разного размера
- 17. simpleopenni point cloud program with Kinect
- 18. PCL Как создать массив/вектор Point Cloud?
- 19. Google Tango Point Cloud без данных
- 20. Project Tango Point Cloud Translations and Rotations
- 21. Point Cloud с помощью iPhone-камеры
- 22. Kinect Point Cloud To Color Transform
- 23. C# point cloud matching (Visual studio 2013)
- 24. Point Cloud Library - Функции записи для приема нескольких типов
- 25. Могу ли я создать Point Cloud из сетки?
- 26. Запуск исполняемого файла hdl_simple_viewer.cpp из библиотеки Point Cloud Library
- 27. Point Cloud Library не может найти файл библиотеки OpenNI
- 28. Point-Cloud of Body с помощью Kinect SDK
- 29. Ошибка сегментации в визуализаторе PCL Point-cloud-библиотеки
- 30. Project Tango Point Cloud странный сбой и плотная карта глубины
Можете ли вы разместить образец ввода и вывода? как выглядит трехмерная математическая формула? – Nishanth