[−][src]Function arrayfire::inverse_deconv
pub fn inverse_deconv<T>(
input: &Array<T>,
kernel: &Array<f32>,
gamma: f32,
algo: InverseDeconvAlgo
) -> Array<T::AbsOutType> where
T: DeconvInput,
T::AbsOutType: HasAfEnum,
Inverse deconvolution
This is a linear algorithm i.e. they are non-iterative in nature and usually faster than iterative deconvolution algorithms.
Depending on the values passed on to algo
of type enum InverseDeconvAlgo,
different equations are used to compute the final result.
Tikhonov's Deconvolution Method:
The update equation for this algorithm is as follows:
\begin{equation}
\hat{I}_{\omega} = \frac{ I_{\omega} * P^{*}_{\omega} } { |P_{\omega}|^2 + \gamma }
\end{equation}
where
- $ I_{\omega} $ is the observed(input/blurred) image in frequency domain
- $ P_{\omega} $ is the point spread function in frequency domain
- $ \gamma $ is a user defined regularization constant
The type of output Array from deconvolution will be double if the input array type is double. Otherwise, it will be float in rest of the cases. Should the caller want to save the image to disk or require the values of output to be in a fixed range, that should be done by the caller explicitly.