www.gusucode.com > 瑞利信道下噪声能量的估计源码程序 > 瑞利信道下噪声能量的估计源码程序/MSP_estimate_version1/ReferenceMethods/Brummer.m

    % Brummer's method
% M.E. Brummer, et al., Automatic detection of brain contours in MRI data sets, IEEE Transactions on Medical Imaging, vol. 12.2 (1993): 153-166
%
% 30/12/2013
% 
% Tomasz Pieciak
% AGH university of Science and Technology, Krakow, Poland
% pieciak@agh.edu.pl, http://home.agh.edu.pl/pieciak/
%
% ARGUMENTS
%   data - single-coil MRI data
%   bins - histogram bins
%
% FUNCTION RETURNS
%   sigma - estimated noise level (sigma)
%
% USAGE
%    sigma_estimated = Brummer(data, 1000)

function [sigma] = Brummer(data, bins)

% initial noise level searching
[histogram_p, histogram_x] = hist(data(:), bins);
histogram_p_filtered = filtfilt(ones(1,25), 1, histogram_p); % low-pass filter (window 1x25)
[value, index] = max(histogram_p_filtered);
fc = histogram_x(2*index); 

% minimization procedure - least-squares fitting procedure
[h, f] = hist(data(data <= fc), bins); % letters according to eq. 12 in 'Automatic detection of brain contours in MRI data sets', p. 156

F_MIN = @(x) sum((h  -  x(2) .* (f./x(1).^2) .* exp(-(f.^2)./(2.*x(1).^2))).^2);   % according to eq. 12, p.156
                                                                                   % x(1) - sigma,  x(2) - K
sigma0 = histogram_x(index);
K0 = 1;
sigma_K = fminsearch(F_MIN, [sigma0, K0]);
sigma = sigma_K(1);