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

Method getClassifiedImage

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

Source from the content-addressed store, hash-verified

436
437
438QImage Vectorizer::getClassifiedImage(double* qualityPtr,
439 ProgressObserver* progressObserver)
440{
441 if (classifiedImage.isNull())
442 {
443 classifiedImage = QImage(sourceImage.size(), QImage::Format_Indexed8);
444 classifiedImage.setColorCount(sourceImageColors.size());
445 for (std::size_t i = 0; i < sourceImageColors.size(); i++)
446 {
447 classifiedImage.setColor(i, sourceImageColors[i]->getRGBTriplet());
448 }
449
450 std::vector<OrganizableElement*> classes(sourceImageColors.size());
451 for (std::size_t i = 0; i < sourceImageColors.size(); i++)
452 classes[i] = sourceImageColors[i].get();
453
454 KohonenMap km;
455 km.setClasses(classes);
456
457 auto mapFunctor = ClassificationMapper(sourceImageColors, km);
458 auto results = Concurrency::process<double>(progressObserver, mapFunctor, sourceImage, classifiedImage);
459 if (progressObserver && progressObserver->isInterruptionRequested())
460 {
461 classifiedImage = QImage();
462 quality = 0;
463 }
464 else
465 {
466 quality = std::accumulate(begin(results), end(results), 0.0, [](auto a, auto& b) { return a + b.future.result(); });
467 }
468 }
469
470 if (qualityPtr) *qualityPtr = quality;
471
472 return classifiedImage;
473}
474
475/*! Creates BW image where pixels are on positions where any of the selected
476 * colors were. Final image is also held in data member bwImage.

Callers 2

performClassificationMethod · 0.45

Calls 8

getRGBTripletMethod · 0.80
setClassesMethod · 0.80
QImageClass · 0.70
sizeMethod · 0.45
setColorMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected