1

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 は、必要なインデックス付けを表しています。

私の質問は次のとおりです。上記が間違っていることは知っています。しかし、費用関数と目標に関して、私がやりたいことを最もよく表していると思います。いくつかの助けをいただければ幸いです。

4

0 に答える 0