3#include "../../_cexports/c_sample_database.h"
5#include "../../global.hpp"
6#include "../../image.hpp"
7#include "../sample_image_list.hpp"
8#include "../sample_list_image_data_type.hpp"
26 class ImageRegressionLabelInfo
29 ImageRegressionLabelInfo(
const SharedReleaseObjectGuard &sguardSil,
const std::vector<float> &label)
30 : shandleSil_(sguardSil)
31 , labelInfo_(sguardSil, label)
35 ImageRegressionLabelInfo(
const ImageRegressionLabelInfo &other) =
delete;
36 ImageRegressionLabelInfo &operator=(
const ImageRegressionLabelInfo &other) =
delete;
37 ImageRegressionLabelInfo(ImageRegressionLabelInfo &&other) =
delete;
38 ImageRegressionLabelInfo &operator=(ImageRegressionLabelInfo &&other) =
delete;
39 virtual ~ImageRegressionLabelInfo() =
default;
52 return labelInfo_.Samples();
78 return labelInfo_.Label();
92 Private::AddSample(shandleSil_.Handle(),
Label(), srcImage, extractionLocation, mode);
104 Private::Relabel(shandleSil_.Handle(),
Index(), label);
108 SharedReleaseObjectGuard shandleSil_;
109 Private::ImageLabelInfo<std::vector<float>> labelInfo_;
26 class ImageRegressionLabelInfo {
…};
119 class ImageRegressionInfoCollection :
public LabelInfoCollection<ImageRegressionLabelInfo>
122 explicit ImageRegressionInfoCollection(
const SharedReleaseObjectGuard &sguardSil)
123 : LabelInfoCollection<ImageRegressionLabelInfo>(sguardSil)
142 Private::AddSample(shandleSil_.Handle(), label, srcImage, extractionLocation, mode);
154 auto count =
Count();
155 for (
int i = 0; i < count; ++i)
168 auto labelType = CVB_CALL_CAPI(SilGetLabelType(shandleSil_.Handle()));
170 CVB_CALL_CAPI_CHECKED(SilGetFloatVectorLabelDim(labelType, dim));
171 auto label = CVB_CALL_CAPI(SilGetLabel(shandleSil_.Handle(), index));
173 CVB_CALL_CAPI_CHECKED(SilGetFloatVectorLabel(label, floatLabel.data(), dim));
174 return std::make_unique<ImageRegressionLabelInfo>(shandleSil_, floatLabel);
119 class ImageRegressionInfoCollection :
public LabelInfoCollection<ImageRegressionLabelInfo> {
…};
189 class SampleRegressionImageList :
public SampleImageList
192 explicit SampleRegressionImageList(ReleaseObjectGuard &&guardSil,
const String &fileName =
String())
193 : SampleImageList(
std::move(guardSil), fileName)
194 , regressionDimension_(
static_cast<int>(Private::GetFloatRegressionDimension(
Handle())))
208 : SampleRegressionImageList(CreateInternal(imageDataType, regressionDimension))
218 : SampleRegressionImageList(ReleaseObjectGuard(LoadInternal(fileName, CExports::SLT_Float)), fileName)
224 static ReleaseObjectGuard CreateInternal(
const SampleListImageDataType &imageDataType,
int regressionDimension)
230 ReleaseObjectGuard lblType(CVB_CALL_CAPI(SilCreateLabelTypeFloatVector(regressionDimension)));
231 ReleaseObjectGuard sil(CVB_CALL_CAPI(SilCreate(lblType.Handle(), imageDataType.
Handle())));
265 return regressionDimension_;
286 return TransformData<SampleRegressionImageList>(transformCallback);
297 return TransformLabels<SampleRegressionImageList>(transformCallback);
316 auto dataHandle = CVB_CALL_CAPI(SilGetData(
Handle(), sampleIndex));
317 auto labelRef = CVB_CALL_CAPI(SilGetLabelReference(dataHandle, 0));
318 auto labelIndex = CVB_CALL_CAPI(SilGetLabelIndex(
Handle(), labelRef));
319 return Values()->ReadInfo(labelIndex);
323 int regressionDimension_;
189 class SampleRegressionImageList :
public SampleImageList {
…};
The Common Vision Blox image.
Definition decl_image.hpp:50
Multi-purpose 2D vector class.
Definition point_2d.hpp:20
bool HasValue(const std::vector< float > &label)
Check if a given value is already present in the values collection.
Definition decl_regression_sil.hpp:152
void Add(const std::vector< float > &label, const Image &srcImage, Point2D< int > extractionLocation, SampleExtractionMode mode=SampleExtractionMode::TopLeftCorner)
Add a sample to a new value. If the class indicated by the label already exists the sample will be ad...
Definition decl_regression_sil.hpp:139
void Relabel(const std::vector< float > &label)
Modify the label of a sample set, but not to one that already exists in the sample list.
Definition decl_regression_sil.hpp:102
ImageCollectionPtr Samples()
Get samples under this label.
Definition decl_regression_sil.hpp:50
void Add(const Image &srcImage, Point2D< int > extractionLocation, SampleExtractionMode mode=SampleExtractionMode::TopLeftCorner)
Add a new sample to an existing class.
Definition decl_regression_sil.hpp:89
std::vector< float > Label() const
Get label under which this class is stored.
Definition decl_regression_sil.hpp:76
std::vector< float > LabelType
Type of the labels.
Definition decl_regression_sil.hpp:43
int Index() const
Get the index of this label.
Definition decl_regression_sil.hpp:63
std::unique_ptr< ImageRegressionLabelInfo > ReadInfo(int index) const
Definition sample_list.hpp:115
int Count() const
Definition sample_list.hpp:103
Classifier type that operates on images.
Definition decl_classification_sil.hpp:213
void * Handle() const noexcept
Classic API SIL handle.
Definition sample_list.hpp:411
Descriptor for image data to be digested by an image list.
Definition sample_list_image_data_type.hpp:25
void * Handle() const noexcept
Classic API SIL handle.
Definition sample_list_image_data_type.hpp:105
static std::unique_ptr< SampleRegressionImageList > FromHandle(ReleaseObjectGuard &&guard, const String &fileName=String())
Creates regression image list from a classic API handle.
Definition decl_regression_sil.hpp:248
SampleRegressionImageList(const String &fileName)
Load a sample regression image from a file.
Definition decl_regression_sil.hpp:217
static constexpr int RegressionDimensionMax
Maximum regression dimension to be used.
Definition decl_regression_sil.hpp:237
std::unique_ptr< SampleRegressionImageList > Transform(LabelTransformVectorToVector transformCallback) const
Transform this sample image list into a new sample image list by transforming each label inside it.
Definition decl_regression_sil.hpp:295
ImageRegressionInfoCollectionPtr Values()
Get the class collection.
Definition decl_regression_sil.hpp:273
int RegressionDimension() const noexcept
Get the dimension of the regression labels used in this sample image list.
Definition decl_regression_sil.hpp:263
std::unique_ptr< SampleRegressionImageList > Transform(DataTransformImageToImage transformCallback) const
Transform this sample image list into a new sample image list by transforming each sample inside it.
Definition decl_regression_sil.hpp:284
std::unique_ptr< ImageRegressionLabelInfo > GetValueForSample(int sampleIndex)
Retrieve the label information that goes with a given sample.
Definition decl_regression_sil.hpp:314
SampleRegressionImageList(const SampleListImageDataType &imageDataType, int regressionDimension)
Create a sample image list suitable for regression tasks.
Definition decl_regression_sil.hpp:207
Namespace for the SampleDatabase package.
Definition decl_classification_sil.hpp:20
std::function< std::vector< float >(const std::vector< float > &labelIn)> LabelTransformVectorToVector
Callback for label transformation.
Definition sample_list.hpp:339
std::shared_ptr< ImageRegressionInfoCollection > ImageRegressionInfoCollectionPtr
Convenience shared pointer for ImageRegressionInfoCollection.
Definition decl_regression_sil.hpp:180
std::shared_ptr< ImageCollection > ImageCollectionPtr
Convenience shared pointer for ImageCollection.
Definition sample_image_list.hpp:108
std::shared_ptr< SampleRegressionImageList > SampleRegressionImageListPtr
Convenience shared pointer for SampleRegressionImageList.
Definition decl_regression_sil.hpp:328
std::function< String(const std::vector< float > &labelIn)> LabelTransformVectorToString
Callback for label transformation.
Definition sample_list.hpp:347
std::function< std::unique_ptr< Image >(const Image &imgIn)> DataTransformImageToImage
Image data transformation callback.
Definition sample_list.hpp:355
SampleExtractionMode
Possible approaches to the sample extraction in the "Add" methods of image list classes.
Definition sample_image_list.hpp:25
@ TopLeftCorner
Position parameter is assumed to refer to the top left corner of the feature window.
Definition sample_image_list.hpp:27
std::shared_ptr< ImageRegressionLabelInfo > ImageRegressionLabelInfoPtr
Convenience shared pointer for ImageRegressionLabelInfo.
Definition decl_regression_sil.hpp:113
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
std::string String
String for wide characters or unicode characters.
Definition string.hpp:49