MCPcopy Create free account
hub / github.com/OpenOrienteering/mapper / performClassification

Method performClassification

3rd-party/cove/libvectorizer/Vectorizer.cpp:308–378  ·  view source on GitHub ↗

! Runs classfication. The progress observer is called during work if set. * \param[in] progressObserver Pointer to class implementing ProgressObserver. * In case it is null pointer no calls take place. */

Source from the content-addressed store, hash-verified

306 * In case it is null pointer no calls take place.
307 */
308bool Vectorizer::performClassification(ProgressObserver* progressObserver)
309{
310 // invalidate previous images
311 bwImage = classifiedImage = QImage();
312 std::unique_ptr<KohonenPatternGetter> pg;
313
314 // if no initial colors have been set, select random ones
315 if (sourceImageColors.empty()) setInitColors({});
316
317 std::vector<OrganizableElement*> classes(sourceImageColors.size());
318 for (std::size_t i = 0; i < sourceImageColors.size(); i++)
319 classes[i] = sourceImageColors[i].get();
320
321 KohonenMap km;
322 km.setClasses(classes);
323
324 switch (learnMethod)
325 {
326 case KOHONEN_CLASSIC:
327 {
328 switch (patternStrategy)
329 {
330 case PATTERN_RANDOM:
331 pg = std::make_unique<RandomPatternGetter>(sourceImage, mc.get());
332 break;
333 default:
334 qWarning("UNIMPLEMENTED pattern getter");
335 }
336
337 std::unique_ptr<KohonenAlphaGetter> ag;
338 switch (alphaStrategy)
339 {
340 case ALPHA_CLASSIC:
341 ag = std::make_unique<ClassicAlphaGetter>(initAlpha, q, E, minAlpha,
342 progressObserver);
343 break;
344 default:
345 qWarning("UNIMPLEMENTED alpha getter");
346 }
347
348 km.performLearning(*ag, *pg);
349 }
350 break;
351 case KOHONEN_BATCH:
352 {
353 auto bg = std::make_unique<SequentialPatternGetter>(
354 sourceImage, mc.get(), progressObserver);
355 quality = km.performBatchLearning(*bg);
356 classifiedImage = *bg->getClassifiedImage();
357 }
358 break;
359 default:
360 qWarning("UNIMPLEMENTED classification method");
361 }
362
363 bool cancel = progressObserver && progressObserver->isInterruptionRequested();
364 if (cancel)
365 {

Callers 1

Calls 11

setClassesMethod · 0.80
performLearningMethod · 0.80
performBatchLearningMethod · 0.80
getClassesMethod · 0.80
QImageClass · 0.70
emptyMethod · 0.45
sizeMethod · 0.45
getMethod · 0.45
getClassifiedImageMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected