Morphological Baseline Correction (Erosion/Dilation)
Source:R/baseline-morphological.R
step_measure_baseline_morphological.Rdstep_measure_baseline_morphological() creates a specification of a recipe
step that applies morphological erosion followed by dilation for baseline
estimation.
Usage
step_measure_baseline_morphological(
recipe,
measures = NULL,
window_size = 50L,
iterations = 1L,
role = NA,
trained = FALSE,
skip = FALSE,
id = recipes::rand_id("measure_baseline_morphological")
)Arguments
- recipe
A recipe object.
- measures
An optional character vector of measure column names.
- window_size
Size of the structuring element. Default is 50.
- iterations
Number of erosion iterations. Default is 1.
- role
Not used.
- trained
Logical indicating if the step has been trained.
- skip
Logical. Should the step be skipped when baking?
- id
Unique step identifier.
Details
This morphological approach uses erosion (local minimum) to push the baseline down below peaks, followed by dilation (local maximum) to smooth the result.
Multiple erosion iterations can be used for signals with tall peaks that require more aggressive baseline estimation.
See also
Other measure-baseline:
step_measure_baseline_airpls(),
step_measure_baseline_als(),
step_measure_baseline_arpls(),
step_measure_baseline_aspls(),
step_measure_baseline_auto(),
step_measure_baseline_custom(),
step_measure_baseline_fastchrom(),
step_measure_baseline_gpc(),
step_measure_baseline_iarpls(),
step_measure_baseline_minima(),
step_measure_baseline_morph(),
step_measure_baseline_poly(),
step_measure_baseline_py(),
step_measure_baseline_rf(),
step_measure_baseline_rolling(),
step_measure_baseline_snip(),
step_measure_baseline_tophat(),
step_measure_detrend()
Examples
library(recipes)
# \donttest{
rec <- recipe(water + fat + protein ~ ., data = meats_long) |>
update_role(id, new_role = "id") |>
step_measure_input_long(transmittance, location = vars(channel)) |>
step_measure_baseline_morphological(window_size = 50) |>
prep()
bake(rec, new_data = NULL)
#> # A tibble: 215 × 6
#> id water fat protein .measures channel
#> <int> <dbl> <dbl> <dbl> <meas> <list>
#> 1 1 60.5 22.5 16.7 [100 × 2] <int [100]>
#> 2 2 46 40.1 13.5 [100 × 2] <int [100]>
#> 3 3 71 8.4 20.5 [100 × 2] <int [100]>
#> 4 4 72.8 5.9 20.7 [100 × 2] <int [100]>
#> 5 5 58.3 25.5 15.5 [100 × 2] <int [100]>
#> 6 6 44 42.7 13.7 [100 × 2] <int [100]>
#> 7 7 44 42.7 13.7 [100 × 2] <int [100]>
#> 8 8 69.3 10.6 19.3 [100 × 2] <int [100]>
#> 9 9 61.4 19.9 17.7 [100 × 2] <int [100]>
#> 10 10 61.4 19.9 17.7 [100 × 2] <int [100]>
#> # ℹ 205 more rows
# }