基于matlab函数的图像聚类问题
现在我正在写一个关于图像识别和聚类的项目。在作为我项目基础的出版物中,有这样一个等式 变量描述如下 Rj-是j-th的旋转矩阵 簇 t_j-是j-th的平移向量 簇 p*ij-是从第j个点算起的第i个点 簇 x_i-是图像中的第i个点 我在编写这个函数时遇到了一个小问题,所以我问出版物的作者是否可以与我分享一个源代码。这是我得到的基于matlab函数的图像聚类问题,matlab,image-processing,cluster-analysis,Matlab,Image Processing,Cluster Analysis,现在我正在写一个关于图像识别和聚类的项目。在作为我项目基础的出版物中,有这样一个等式 变量描述如下 Rj-是j-th的旋转矩阵 簇 t_j-是j-th的平移向量 簇 p*ij-是从第j个点算起的第i个点 簇 x_i-是图像中的第i个点 我在编写这个函数时遇到了一个小问题,所以我问出版物的作者是否可以与我分享一个源代码。这是我得到的 ddx=D.x-Q.translation(1); ddy=D.y-Q.translation(2); st=sin(Q.theta); ct=cos(Q.th
ddx=D.x-Q.translation(1);
ddy=D.y-Q.translation(2);
st=sin(Q.theta); ct=cos(Q.theta); R=[ct -st; st ct]; % rotation matrix
qq=R*[ppx0; ppy0];
qqd2=sum(qq.*qq,1);
Q.scale=sum((ddx.*qq(1,:)+ddy.*qq(2,:)).*Um) / sum(qqd2.*Um);
这里D.x
和D.y
是数据点的坐标
Q.translation
(向量)、Q.scale
和Q.theta
是变换参数
ppx0
和ppy0
是*p**ij的x坐标和y坐标
Um
是包含[Umij]的矩阵
然而,我很难理解这个解决方案。首先,我不明白他为什么用数组乘法(运算符*
)代替矩阵乘法(运算符*
),而且他似乎只取一个/第一个点p*
我希望有人能帮助我尝试这个源代码。提前感谢看起来
ppx0
和ppy0
不是坐标,而是向量或坐标。这样,
R*[ppx0; ppy0] =
[ct -st ; st ct] * [x_0 x_1 ... x_N-1 ; y_0 y_1 ... y_N-1]
因此,qq
是一个2xN向量,就像[ppx0;ppy0]
一样
在qqd2=sum(qq.*qq,1)
中,使用了*
运算符,因为实际上是对矩阵的每个值进行平方运算,以在以后找到每个坐标对的平方距离
在ddx.*qq(1,:)+ddy.*qq(2,:)
中,*
运算符用作替换双和的快捷方式。换言之,除了单独获取每个矩阵乘积的和(其本身就是乘法的和),他们首先执行所有必要的乘法,然后获取和。(我希望这是有道理的)。你可以用一些基本的矩阵代数来证明所有这些工作