我有一个高分辨率的二进制图像,看起来像:
我正在尝试计算应该稍微向右旋转的主轴并最终获得对象的方向轴
这里的一篇文章(在 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)))
}
但是,计算m
,x0
和y0
在 R 中花费的时间太长。
有人知道R中的实现吗?