Hi,
I have 2 clouds of nodes in 3d and I want to register these two model. When I applied Icp code the result was not correct. clouds have the same morphology means they are two spherical model which one is bigger. I want to register the smaller to bigger in term of translation and rotation.
Any idea will be appreciate Thanks

댓글 수: 2

Matt Kindig
Matt Kindig 2013년 4월 10일
편집: Matt Kindig 2013년 4월 10일
Your question is a bit confusing: do the two point clouds differ only by a translation and rotation (i.e., a rigid-body transformation), or is there a relative scaling necessary (i.e., an affine transformation)? Your question is not clear...
sareh
sareh 2013년 4월 22일
Thats the question I have! the clouds are differ by scaling and axis(lets say the shapes have the same morphology as cylinder ). the smaller shape has a differ bigger axis direction in 3d space and its smaller. Also there is no relative scaling between them.
Thanks

댓글을 달려면 로그인하십시오.

 채택된 답변

Image Analyst
Image Analyst 2013년 4월 22일

0 개 추천

Why not just find the centroid of both of them and then the mean radius of the points from their centroid, and scale and shift the x and y coordinates of the second cluster to match up with the first cluster?

댓글 수: 8

sareh
sareh 2013년 4월 23일
I have tried to find mean of variables but as far as nodes are not numbered in order the mean values are sooo close two each other that cant help me to find the axis of data! Concerning scaling I have tried different registration transformation methods available in publications but I faced the same problem. Do you have any idea about scaling part?
sareh
sareh 2013년 4월 23일
I also thought about using SVD to give me the direction of axis and more data on shape axis so that can help to have centroid and 2 other points from SVD
Image Analyst
Image Analyst 2013년 4월 23일
Do you have the two clouds in two different arrays? Or you just think there are two clusters but the data is still in one combined array - all the data coordinates in one single array?
sareh
sareh 2013년 4월 23일
편집: sareh 2013년 4월 23일
Non, lets call it size(data) = 1600 * 3 then data(:,1)=x and so on! Also the second one named as data2 like defined above! Somewhere in http://www.mathworks.se/matlabcentral/newsreader/view_thread/165770 Ive read that v(:,1) can be the axis direction of a shape but I still dont know is it correct or not!
Image Analyst
Image Analyst 2013년 4월 23일
편집: Image Analyst 2013년 4월 23일
So, why then can't you find the means and std dev and shift and scale the second data?
meansOf1 = mean(data1, 1);
meansOf2 = mean(data2, 1);
stdDevsOf1 = std(data1, 1);
stdDevsOf2 = std(data2, 1);
% Shift mean of 2 to be the same as 1.
data2(:,1) = data2(:,1) - meansOf2(1) + meansOf1(1);
data2(:,2) = data2(:,2) - meansOf2(2) + meansOf1(2);
data2(:,3) = data2(:,3) - meansOf2(3) + meansOf1(3);
% Then scale it. You do this part (simple math).
sareh
sareh 2013년 4월 24일
편집: sareh 2013년 4월 24일
Thanks for your answer but that was I tried before and it can help wile both shapes are some how in the same directions,
Ayesha
Ayesha 2016년 3월 3일
Hi I am using pcregrigid to register two different length pointcloud. I can shift the mean of the pointcloud, but could you please show me how to scale it.
I'm sure you know how to shift and scale. Just subtract the actual mean, divide by the actual range, then multiply the the desired range, and shift by adding the desired mean:
range = max(x)-min(x);
normalizedX = desiredRange * (x-mean(x)) / range + desiredMean;

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Matt J
Matt J 2013년 4월 23일
편집: Matt J 2013년 4월 23일

0 개 추천

Do both clouds have the same number of points? Is each point in cloud B the rotation/translation/scaling of a corresponding point in cloud A? If so, this FEX file is applicable,

댓글 수: 6

sareh
sareh 2013년 4월 24일
Thanks for your answer, but clouds have the same number of points! about the next question I cant say if it is true or not as far as nodes are not spread in a same order, And about your function; I have already used but there is a bug and I tried to modify it base on my this bug, well I couldnt solve it.
Matt J
Matt J 2013년 4월 24일
The code assumes that the points are in the same order, so that may account for what you perceived as a "bug".
sareh
sareh 2013년 4월 24일
Yes thats true! I am just thinking about trying to find a relationship between V value in svd of 2 shapes to rotate one base of the other one! Do you have any idea regarding this matter? Thanks
zheng wang
zheng wang 2014년 7월 15일
Hello, as the program ABSOR ,do you have the two available clouds as the inputs A and B. And how to input the two clouds.I urgently need your help,thank you.
Matt J
Matt J 2014년 7월 15일
@zheng,
The help documentation for ABSOR describes the input syntax. The columns of matrices A and B must contain the points in the clouds and in corresponding order.
zheng wang
zheng wang 2014년 7월 16일
Thank you for your answer but I cant input two point clouds as the Matrix A and B.The data maybe wrong so could you show me your two clouds and cut some figures for me ?My mail is wangzheng19930107@gmail.com.Thanks

댓글을 달려면 로그인하십시오.

카테고리

질문:

2013년 4월 10일

댓글:

2016년 3월 3일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by