次のような高解像度のバイナリ イメージがあります。
右にわずかに回転し、最終的にオブジェクトの方向の軸を取得する必要がある長軸を計算しようとしています
ここの投稿(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
ただし、Rでは ,x0
との計算にy0
時間がかかりすぎます。
Rでの実装を知っている人はいますか?