Индексирование трехмерного облака точек в MATLAB

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

ptCloud1 = pcread('sub2a.ply')
figure
showPointCloud(ptCloud1)

Мне нужно добавить метки для каждой точки в отображении плотного облака точек. Как я могу это сделать?


person Babak Ghassemi    schedule 28.09.2015    source источник
comment
Вы хотите добавить метки для каждой точки в плотном облаке точек? Как вы планируете читать метки, если облако точек плотное? Кстати, ваш пример не очень полезен. Создайте mcve   -  person kkuilla    schedule 28.09.2015
comment
на рисунке есть приложение с именем курсор данных, когда вы щелкаете по нему и нажимаете на точку, где отображается информация о x, y, z, мне также нужно добавить метку точки   -  person Babak Ghassemi    schedule 28.09.2015
comment
И как вы ожидаете, что люди узнают об этом, если вы им об этом не расскажете? Вы недостаточно объяснили свою проблему. Вы оставляете читателя слишком много гадать. Создайте mcve и включите всю необходимую информацию, чтобы другие могли воспроизвести вашу проблему и поиграть с ней. Я знаю, что вы просто хотите получить быстрый ответ, но стоит приложить усилия. Если вы это сделаете, у вас будет гораздо больше шансов получить полезный ответ.   -  person kkuilla    schedule 28.09.2015


Ответы (1)


Вы можете добавить текст на график, используя text:

text(x,y,z,str) позиционирует текст в трехмерных координатах.

Таким образом, поскольку вам нужны координаты:

str = sprintf('x:%f, y:%f, z:%f',x,y,z);
text(x,y,z,str)

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

person Adriaan    schedule 28.09.2015
comment
Спасибо за вашу помощь. но я хочу показать только номер точки, а не все координаты - person Babak Ghassemi; 29.09.2015
comment
Затем используйте ту же команду, чтобы отобразить только нужный текст. Создайте строку с sprintf, затем напечатайте ее на графике с text. Прочитайте связанные страницы документации в ответе. - person Adriaan; 29.09.2015
comment
@BabakGhassemi. Адриан показал тебе, как это сделать правильно. Вы должны использовать функцию text, чтобы добавить метки к вашим точкам. Точный окончательный синтаксис будет зависеть от того, как именно вы хотите пометить точки (вы должны понимать, как создавать строки для этого, и sprintf — хороший способ сделать это. Вы также можете проверить, как метки использовались в этом ответ, для каждой метки указан номер точки и другая информация. - person Hoki; 29.09.2015
comment
@Adriaan, спасибо, это полезный способ, но, к сожалению, я не знаю, как получить индекс каждой точки для добавления в str - person Babak Ghassemi; 29.09.2015
comment
Это отдельный вопрос. Пожалуйста, задайте новый вопрос для этого, опять же в соответствии с как спросить. Если этот ответ действительно решил проблему, указанную в вашем вопросе, примите его. Это можно сделать, нажав на галочку под стрелками голосования слева от ответа. Это означает для других, что этот ответ помог вам решить эту проблему, а также что вам больше не нужна помощь с этим конкретным вопросом. - person Adriaan; 29.09.2015