61 return { {
"Detection image", {
63 "Segmentation algorithm to be used (LUTZ, TILES or ML (a ONNX-format model must be provided))"},
69 "Lutz sliding window size (0=disable)"},
71 "BFS algorithm max source x/y size (default=1000)"},
73 "ONNX model to use with machine learning segmentation"},
75 "Probability threshold for ML detection"},
121 segConfigLogger.info() <<
"Using the default segmentation (3x3) filter.";
123 convolution_kernel->setValue(0,0, 1);
124 convolution_kernel->setValue(0,1, 2);
125 convolution_kernel->setValue(0,2, 1);
127 convolution_kernel->setValue(1,0, 2);
128 convolution_kernel->setValue(1,1, 4);
129 convolution_kernel->setValue(1,2, 2);
131 convolution_kernel->setValue(2,0, 1);
132 convolution_kernel->setValue(2,1, 2);
133 convolution_kernel->setValue(2,2, 1);
198 enum class LoadState {
204 LoadState state = LoadState::STATE_START;
205 bool normalize =
false;
207 size_t kernel_width = 0;
209 while (file.
good()) {
214 if (line.
size() == 0) {
221 case LoadState::STATE_START:
223 state = LoadState::STATE_FIRST_LINE;
225 case LoadState::STATE_FIRST_LINE:
227 kernel_width = kernel_data.
size();
228 state = LoadState::STATE_OTHER_LINES;
230 case LoadState::STATE_OTHER_LINES:
237 if (kernel_width == 0) {
240 auto kernel_height = kernel_data.
size() / kernel_width;
244 segConfigLogger.info() <<
"Loaded segmentation filter: " << filename <<
" width: " << convolution_kernel->getWidth() <<
" height: " << convolution_kernel->getHeight();