У меня есть трехмерное изображение облака точек (формат .ply). Мне нужно разрезать его по центру, разделив на две части. Пытался выбрать только половину облака точек, используя следующий код, но случайные точки получаются не те, которые нужны. Используя следующую логику, разделите облако точек пополам (1/2 исходного) и сохраните результат в новом облаке точек. Невозможно правильно разрезать изображение облака из центра и сохранить его в новом облаке.
stepSize = 1;
indices = 1:stepSize:(i1.Count)/2;
pt = select(i1, indices);
Я также проверил следующий код:
points3d = i1.Location;
points3d_1 = points3d(points3d(:, 1) < 100, :);
points3d_2 = points3d(points3d(:, 1) >= 100, :);
ptCloud1 = pointCloud(points3d_1);
ptCloud2 = pointCloud(points3d_2);
pcshow(ptCloud1);
figure
pcshow(ptCloud2);
Оба фрагмента делают то же самое случайным образом, часть делится, и независимо от того, в каком диапазоне я пытаюсь
point3d(:,1)‹диапазон
второй фрагмент всегда представляет собой полное исходное изображение. Также фрагмент изображения содержит фон исходного изображения, как показано ниже. как получить только облачный регион, хранящийся в новых ptCloud1 и ptCloud2.
Как я могу получить новое нарезанное облако точек. Использование MatalbR2014b
*.ply
не создан путем сканирования слева направо, вы получите бесполезные точки данных, которые вы видели. Даже если бы это было отсканировано как таковое, это была бы ужасно ненадежная методология. Вам нужно посмотреть на свои данные в 3D-пространстве и определить, где находится промежуточная плоскость. - person excaza   schedule 21.12.2015*.ply
файл пополам. Я нигде не говорил, что процесс должен быть ручным, но в какой-то момент вы должны установить критерии для своей промежуточной платы. - person excaza   schedule 21.12.2015xlabel('X'); ylabel('Y'); zlabel('Z');
. Затем посмотрите, есть ли у вас точки с x > 100 в первом облаке точек или точки с x ‹ 100 во втором. - person Dima   schedule 22.12.2015