$ \DeclareMathOperator{\arccosh}{arccosh} \DeclareMathOperator*{\argmin}{arg\,min} \DeclareMathOperator{\Exp}{Exp} \newcommand{\geo}[2]{\gamma_{\overset{\frown}{#1,#2}}} \newcommand{\geoS}{\gamma} \newcommand{\geoD}[2]{\gamma_} \newcommand{\geoL}[2]{\gamma(#2; #1)} \newcommand{\gradM}{\nabla_{\M}} \newcommand{\gradMComp}[1]{\nabla_{\M,#1}} \newcommand{\Grid}{\mathcal G} \DeclareMathOperator{\Log}{Log} \newcommand{\M}{\mathcal M} \newcommand{\N}{\mathcal N} \newcommand{\mat}[1]{\mathbf{#1}} \DeclareMathOperator{\prox}{prox} \newcommand{\PT}[3]{\mathrm{PT}_{#1\to#2}#3} \newcommand{\R}{\mathbb R} \newcommand{\SPD}[1]{\mathcal{P}(#1)} \DeclareMathOperator{\Tr}{Tr} \newcommand{\tT}{\mathrm{T}} \newcommand{\vect}[1]{\mathbf{#1}} $

The proximal map of total variation parallel

For given data of dimension , , (usually ) this function computes the proximal map of the TV prior in parallel, returning all results in one array.

Let denote the pixel grid the data is defined on and

the forward neighbors. Then the TV prior is given by

Since each data item appears in terms as forward neighbor and in terms in its “own” sum, computing the proximal map is challenging.

For the cyclic proximal point algorithm let

and analogously for the odd indices. Then the sums of

contains each index at most once.

This function computes the proximal maps in parallel, i.e. returns an array containing all proximal maps

This function can be extended by carrying a different weight for a difference in dimension and can also be extended to diagonal differences when is introduced, i.e. the weights are given as a(n upper triangular) matrix.

For an implementation returning a cyclic evaluation of the versions see proxTV.

Matlab Documentation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
% proxParallelTV(M,x,lambda) compute all proxima the tv prior in parallel
% Items containing a NaN will be initalized with their first prox call.
% and the results saved in indepentend arrays concatenated at the first
% signular dimension.
%
% INPUT
%     M         : a manifold
%     x         : an dataset from M^{n_1,m_2,...,n_m} = M^n
%   lambda      : parameter of the proxes given as a vector, an entry for
%                 each dimension, or a matrix, the diagonal for the TV
%                 terms, the offdiagonals for diagonal differences.
%
% OPTIONAL
%   'FixedMask' : binary mask the size of data items in x to indicate fixed
%   data items
%   'DifferenceProx' : (@(x1,x2,lambda)
%   proxAbsoluteDifference(M,x1,x2,lambda))
%                      specify a prox for the even/odd TV term proxes, i.e.
%                      switch the classical TV by Huber.
%
% OUTPUT
%     y     : result of the (parallel) proximal maps, i,e, of size M^m,L,
%             where L is 2*sum(lambda>0), i.e. the number of parallel
%             proxes this term evaluates
% ---
% Manifold-valued Image Restoration Toolbox 1.2 | R. Bergmann | 2018-02-09

See also