How to add a total variation term to my tomographic reconstruction problem?
1 回表示 (過去 30 日間)
古いコメントを表示
Hi there,
I have got a very simple model to do a tomographic reconstruction:
arg min_x ||Ax - y||^2
in which, A is the system matrix and y is the true projections.
We can solve the problem using Matlab Quasi-Newton (fminunc) or lsqr function; however, may I ask how to add a total variation penalty to the objective function please?
arg min_x ||Ax - y||^2 + TV(x)
Is there any exsisting implementation in Matlab I can use?
Thanks very much.
Best regards, Aaronne
0 件のコメント
回答 (1 件)
Bjorn Gustavsson
2011 年 6 月 1 日
Wouldn't TV(x) be something similar to:
[D1,D2,D3] = gradient(x);
TV = sum((D1.^2+D2.^2+D3.^2).^.5);
If you're using fminunc or the other general optimizers this should be fairly straightforward to add. But wouldn't you get approximately the same by:
D = del2(x);
TV = sum(abs(D));
It is just a smoothing term after all?
2 件のコメント
Bjorn Gustavsson
2011 年 6 月 3 日
Well, I guess that version 1 should be close enough to the definition of TV I found, but I don't think there should be any practical difference between using that as a smoother or the del2 version. Perhaps it would be wiser to use del2(x).^2 instead of the abs.
If you need the gradient then either you have to do the full tedious expansions yourself, or (hopefully) you could use the "Adaptive Robust Numerical Differentiation" package found on the file exchange: http://www.mathworks.com/matlabcentral/fileexchange/13490-adaptive-robust-numerical-differentiation
参考
カテゴリ
Help Center および File Exchange で GPU Computing in MATLAB についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!