Surface smoothers
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=R8), | public | :: | PAD_FFT_FILTER | = | PAD_FFT |
Classical Gaussian filter
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=R8), | intent(in), | dimension(1:long, 1:larg) | :: | tab |
2D array in |
|
integer(kind=I4), | intent(in) | :: | long |
2D array width |
||
integer(kind=I4), | intent(in) | :: | larg |
2D array height |
||
real(kind=R8), | intent(in) | :: | cutoff |
cut-off wavelength |
||
real(kind=R8), | intent(out), | dimension(1:long, 1:larg) | :: | bf_tab |
2D array out |
|
logical(kind=I4), | intent(in) | :: | multi_fft |
multiple fft at once ? |
||
real(kind=R8), | intent(in), | optional | :: | pad |
fft padding |
|
character(len=*), | intent(in), | optional | :: | ext |
extension |
|
character(len=*), | intent(in), | optional | :: | type_apo |
apodization type |
Gaussian kernel
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=I4), | intent(in) | :: | long |
2D array length |
||
integer(kind=I4), | intent(in) | :: | larg |
2D array width |
||
real(kind=R8), | intent(in) | :: | xc |
the cut-off wavelength |
||
real(kind=R8), | intent(out), | dimension(1:long, 1:larg) | :: | gauss_filt |
2D array out |
A bit more complex filter: the overall height standard deviation is taken into account
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=R8), | intent(inout), | dimension(1:long, 1:larg) | :: | tab |
2D array |
|
integer(kind=I4), | intent(in) | :: | long |
2D array length |
||
integer(kind=I4), | intent(in) | :: | larg |
2D array width |
||
integer(kind=I4), | intent(in) | :: | snb |
patch number along a direction |
||
integer(kind=I4), | intent(in) | :: | kernel |
kernel size |
||
real(kind=R8), | intent(in) | :: | sig |
error std |
||
logical(kind=I4), | intent(in) | :: | omp |
if multithreading |
Very classical smoothing
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=R8), | intent(inout), | dimension(1:long, 1:larg) | :: | tab |
2D array |
|
integer(kind=I4), | intent(in) | :: | long |
2D array length |
||
integer(kind=I4), | intent(in) | :: | larg |
2D array width |
||
integer(kind=I4), | intent(in) | :: | kernel |
kernel size |
||
logical(kind=I4), | intent(in) | :: | omp |
if multithreading |
Morphological filter: uses combinations of roll_smooth to provide all kind of transformation :
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=R8), | intent(in), | dimension(1:long, 1:larg) | :: | tabin |
2D array in |
|
real(kind=R8), | intent(out), | dimension(1:long, 1:larg) | :: | tabou |
2D array out |
|
integer(kind=I4), | intent(in) | :: | long |
2D array length |
||
integer(kind=I4), | intent(in) | :: | larg |
2D array width |
||
real(kind=R8), | intent(in), | dimension(1:3) | :: | scale_xyz |
lag along x, y and scale z |
|
real(kind=R8), | intent(in) | :: | ray |
roll radius |
||
logical(kind=I4), | intent(in) | :: | omp |
if multithreading |
||
integer(kind=I4), | intent(in) | :: | nb_div |
number of macro elements along an axis |
||
character(len=*), | intent(in) | :: | mtype |
closing, opening, dilation or erosion |
A ball of radius “ray” rolls on / below the surface, hence defining a closing or an opening enveloppe.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=R8), | intent(in), | dimension(1:long, 1:larg) | :: | tabin |
2D array in |
|
real(kind=R8), | intent(out), | dimension(1:long, 1:larg) | :: | tabou |
2D array out |
|
integer(kind=I4), | intent(in) | :: | long |
2D array length |
||
integer(kind=I4), | intent(in) | :: | larg |
2D array width |
||
real(kind=R8), | intent(in), | dimension(1:3) | :: | scale_xyz |
lag along x, y and scale z |
|
integer(kind=I4), | intent(in) | :: | sgn |
+ 1: dilation, -1:erosion |
||
real(kind=R8), | intent(in) | :: | ray |
roll radius |
||
logical(kind=I4), | intent(in) | :: | omp |
if multithreading |
||
integer(kind=I4), | intent(in) | :: | nb_div |
number of macro elements along an axis |
Function to smooth out a 2D array: each point is replaced by a weighted mean of its neighbors.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=R8), | intent(in), | dimension(1:long, 1:larg) | :: | tabin |
2D array in |
|
integer(kind=I4), | intent(in), | optional, | dimension(1:long, 1:larg) | :: | mask |
mask |
real(kind=R8), | intent(out), | dimension(1:long, 1:larg) | :: | tabout |
2D array out |
|
integer(kind=I4), | intent(in) | :: | long |
2D array width |
||
integer(kind=I4), | intent(in) | :: | larg |
2D array height |