matlab DICOM数据读取和Gaussian拟合

350 阅读1分钟
%%读取一组图像数据,比如测试的lateral profile data
data = dicomread(filename)
% 'gaussian1' 1D gaussian
% 'gaussian2' 2D gaussian
f=fit(x,data,'gaussian1')
plot(f,x,data)   
% plot(x,data,f)  wrong

% obtain fitting parameters
a=f.a1;
b=f.b1;
c=f.c1;

% calculate sigam
sigma=f.c1/sqrt(2);

注意:DICOM读取后的数据格式为unit整形。在归一化等计算中需要转换到double.unit和double的转化函数为:

unit(A)
double(A)

高斯拟合中的标准差问题

高斯函数:

f(x)=1σ2πe(xμ)22σ2f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}

Gaussian拟合时,函数维

f(x)=a1×e(xb1)/c12f(x)=a_1\times e^{-{(x-b_1)/c_1}^2}

所以,标准差的值为

σ=c12\sigma=\frac{c1}{\sqrt{2}}

半高宽的计算公式

FWHM=2×2log2×σFWHM =2\times\sqrt{2log2}\times \sigma

用a1来计算标准差的问题

参考

# Finding sigma from fit using Curve Toolbox gaussian?

# Gaussian fit to xy data and extracting FWHM

需要满足 +f(x)=1\int^{+\infty}_{-\infty}{f(x)=1}

查看DICOM数据的问题: 分辨率