📄 eml_em.m
字号:
function xs = eml_em(x, G, yi, ci, ri, Asum, niter)%function xs = eml_em(x, G, yi, ci, ri, Asum, niter)% E-ML-EM algorithm for image reconstruction from Poisson emission data% in% x [np,1] initial image guess (column - see examples)% Asum A'1 = G' * c (optional) column sums% see em_fbp.m for model, G, yi, ci, ri% out% xs [np,niter] image iterates%% Copyright 1998, Jeff Fessler, The University of Michiganif nargin < 3, help(mfilename), error(mfilename), endif ~isvar('ci') | isempty(ci) ci = 1; % ones(size(yi(:)));endif ~isvar('ri') | isempty(ri) ri = 0; % zeros(size(yi(:)));endif ~isvar('Asum') | isempty(Asum) if length(ci) == 1 Asum = sum(G)' * ci; else Asum = G' * ci; endendif any(Asum <= 0), error 'Asum must be positive. Adjust mask.', endif ~isvar('niter') | isempty(niter) niter = 1;endeml_check(yi, ci, ri);if any(x <= 0), error 'need x > 0', endxs = zeros(numel(x), niter);xs(:,1) = x(:);%% loop over iterations%for iter = 2:niter ticker(mfilename, iter, niter) % % update: % x = x .* (A' * (y ./ (A * x + r))) ./ sum(A)' % where A = D(ci) G % yp = ci .* (G * x) + ri; % predicted measurements eterm = G' * (ci .* (yi ./ yp)); x = x .* eterm ./ Asum; xs(:,iter) = x;end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -