2 セットの 3D データに対して基本的なヒストグラム マッチングを実行する必要があります。これはより大きなアルゴリズムの一部です。
私の目標は、次のコスト関数を最小化することでこれを実行することです。
|| cumpdf(f(A)) - cumpdf(B) || .^2
どこ:
cumpdf は累積ヒストグラムです。
f() は線形変換 a*A + b で、a/b は
決定されるアフィン係数です。
A は変換対象の画像、B は照合対象の画像です。
私は lsqcurvefit を使用していますが、トラブルに遭遇したため、本当に助けが必要です。
A(maskA==0)=0;
B(maskB==0)=0;
[na,~] = hist(A(maskA~=0),500);
na = na ./ numel(A(maskA~=0));
x_data = cumsum(na);
[nb,~] = hist(B(maskB~=0),500);
nb = nb ./ numel(B(maskB~=0));
y_data = cumsum(nb);
xo = [1.5 -200];
[coeff,~] = lsqcurvefit(@cost,xo,x_data,y_data);
function F = cost(x,xc)
F = x(1).*A + x(2);
[nc,~] = hist(C(maskA~=0),500);
nc = nc / numel(C(maskA~=0));
xc = cumsum(nc);
Amask と Bmask は、必要なインデックス付けを表しています。
私の質問は次のとおりです。上記が間違っていることは知っています。しかし、費用関数と目標に関して、私がやりたいことを最もよく表していると思います。いくつかの助けをいただければ幸いです。