public bool Train(Image <Bgr, byte>[] colorImages, Image <Gray, byte>[] mono01Images, Image <Gray, byte>[] mono02Images, int[] labels)
        {
            CheckArgumentCorrectness(colorImages, mono01Images, mono02Images, labels);
            log.LogNewLine("start training...");
            //checks on data
            this.FeatureExtracted = new List <IDictionary <String, Bitmap> >();
            var data = extractor.ExtractDescriptors(colorImages, mono01Images, mono02Images, labels);
            var featuresExtractedOn = data.ConvertAll(element => element.Features).ToArray();

            if (featuresExtractedOn.Length == 0)
            {
                return(false);
            }
            var adaptFeature = Util.AdaptFeature(featuresExtractedOn);

            classifier.Train(adaptFeature, labels);
            log.LogNewLine("");
            log.LogNewLine("train ends..");
            return(true);
        }