【发布时间】:2013-04-17 04:32:49
【问题描述】:
我有一个高分辨率的二进制图像,看起来像:
我正在尝试计算应该稍微向右旋转的主轴并最终获得对象的方向轴
here 的帖子(在 matlab 中)建议一种方法是计算数据点的协方差矩阵并找到它们的特征值/特征向量
我正在尝试在 R 中实现类似的东西
%% MATLAB CODE Calculate axis and draw
[M N] = size(Ibw);
[X Y] = meshgrid(1:N,1:M);
%Mass and mass center
m = sum(sum(Ibw));
x0 = sum(sum(Ibw.*X))/m;
y0 = sum(sum(Ibw.*Y))/m;
#R code
d = dim(im)
M = d[1]
N = d[2]
t = meshgrid(M,N)
X = t[[2]]
Y = t[[1]]
m = sum(im);
x0 = sum(im %*% X)/m;
y0 = sum(im %*% Y)/m;
meshgrid <-function(r,c){
return(list(R=matrix(rep(1:r, r), r, byrow=T),
C=matrix(rep(1:c, c), c)))
}
但是,在 R 中计算 m 、 x0 和 y0 需要很长时间。
有人知道 R 中的实现吗?
【问题讨论】:
-
您可以使用
system.time()找出哪一行花费的时间更多吗? -
它的矩阵乘法。我的头像是
2736x3648 -
哪个操作系统?
-
Mac OSX x64 山狮
-
由于您的图像是由直边组成的,您也可以使用Hough transform 来检测它们。
标签: image r matlab image-processing binary-data