使用L2范数最小化(Matlab)的3D数据集的直方图匹配

时间:2012-07-10 09:53:51

标签: matlab image-processing histogram least-squares

我需要对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只代表我需要做的一些索引。

我的问题是:我知道上面的错误。但是,我认为它代表了我想要做的最好的成本函数和目标。一些帮助我非常感激!

0 个答案:

没有答案