图片经过带通滤波(如DCT变换频域系数、小波变换后的小波系数,gabor方向滤波器滤波后的系数)后,其系数服从广义高斯分布,广义高斯分布公式如下所示:
参数
是广义高斯分布的形状参数,
是与标准差有关的参数,x是带通滤波后的系数。当
=2时广义高斯分布就是正态高斯分布,此时
是标准差的
倍。其中分母中的gamma函数如下所示:
令
,滤波后的系数通过这一变换,转化为变量Y,通过证明可以得出变量Y服从gamma分布其概率密度公式如下所示:
Y的前两阶中心矩为
进一步得到关于
的方程式:
令
目前的目的是要求解广义高斯分布形状参数,现在以得到关于
的方程式,可以利用Newton–Raphson方法迭代求出该数值解。
当有n个服从广义高斯分布的样本时,可以估算出(
这里可以给出一个估算值,后面迭代的时候是逐步收敛到理论值)。
最终由样本数据得出的关于
的方程为
利用Newton–Raphson迭代方法得出
更新方程为
这里运用求导数的除法公式和指数函数求导公式可以求出
。下面是推导过程:
令
得到
后,利用Newton–Raphson迭代运算便可以得到形状参数理论值近似值。
利用形状参数
估计
:
下面给出其实现的matlab代码,该代码是在文献“A globally convergent and consistent method for estimating the shape parameter of a generalized Gaussian distribution”基础理论基础之上编写而成。
function [theta, sigma] = ggd_fit(x, theta0)
%
%[theta, sigma] = ggd_fit(x, theta0);
% 根据样本估计单维广义高斯分布的参数值
% x是样本向量
% theta0是形状参数的初始值
% theta是迭代完成后的形状参数值
% sigma是迭代完成后与方差有关的参数值
% 该程序是根据文献 A globally convergent and consistent method for estimating the shape parameter of a generalized Gaussian distribution
% 编写而成,在原作者Lingyun Zhang 基础上修改某些部分 增强了程序的鲁棒性。
% number of sample points
x = x(find(abs(x)>0.001));
n = length(x);
% estimate the shape parameter
theta = theta0;
i=1;
T(1)=theta0;
while (1)
Y1 = mean(abs(x).^theta);
Y2 = mean(abs(x).^(2*theta));
Z = Y2 / Y1 / Y1 - (theta+1);
U1 = mean(abs(x).^theta.*log(abs(x)));%Y1对theta求导
U2 = mean(abs(x).^(2*theta).*log(abs(x)));%Y2平方对theta求导
Z_dot = 2*U2/Y1/Y1 - 2*U1*Y2/Y1/Y1/Y1 - 1;%Z求导结果
theta = theta - Z/Z_dot;
i=i+1;
T(i) = theta;
if theta<0.001
theta= theta0+4;
thta0=theta;
T(i) = theta;
else if abs(T(i-1)-T(i))<10e-10
if theta>0.001
break;
else
theta= theta0+4;
thta0=theta;
T(i) = theta;
end
end
end
end;
% estimate the scale parameter
sigma = ((theta/n) * sum(abs(x).^theta)) .^ (1/theta);
利用该代码对1000个服从均值为0,标准差为2的正态分布样本进行参数估计,得出结果为theta=1.7871,sigma=2.6512;因为标准高斯分布形状参数为2,所以估计值1.7871合适。对于标准高斯分布sigma是标准差的