Exemple #1
0
        internal IEnumerable <Fingerprint> CreateOriginalFingerprintsFromFrames(IEnumerable <Frame> frames, FingerprintConfiguration configuration)
        {
            var fingerprints = new ConcurrentBag <Fingerprint>();
            var images       = frames.ToList();

            if (!images.Any())
            {
                return(Enumerable.Empty <Fingerprint>());
            }

            var length = images.First().Length;

            Parallel.ForEach(images, () => new ushort[length], (frame, loop, cachedIndexes) =>
            {
                float[] rowCols = configuration.OriginalPointSaveTransform != null ? frame.GetImageRowColsCopy() : frame.ImageRowCols;
                waveletDecomposition.DecomposeImageInPlace(rowCols, frame.Rows, frame.Cols, configuration.HaarWaveletNorm);
                RangeUtils.PopulateIndexes(length, cachedIndexes);
                var image = fingerprintDescriptor.ExtractTopWavelets(rowCols, configuration.TopWavelets, cachedIndexes);
                if (!image.IsSilence())
                {
                    fingerprints.Add(new Fingerprint(image, frame.StartsAt, frame.SequenceNumber));
                }

                return(cachedIndexes);
            },
                             cachedIndexes => { });

            return(fingerprints.ToList());
        }
Exemple #2
0
        public List <Fingerprint> CreateFingerprintsFromLogSpectrum(IEnumerable <SpectralImage> spectralImages, FingerprintConfiguration configuration)
        {
            var fingerprints   = new ConcurrentBag <Fingerprint>();
            var spectrumLength = configuration.SpectrogramConfig.ImageLength * configuration.SpectrogramConfig.LogBins;

            Parallel.ForEach(spectralImages, () => new ushort[spectrumLength], (spectralImage, loop, cachedIndexes) =>
            {
                waveletDecomposition.DecomposeImageInPlace(spectralImage.Image, spectralImage.Rows, spectralImage.Cols, configuration.HaarWaveletNorm);
                RangeUtils.PopulateIndexes(spectrumLength, cachedIndexes);
                var image = fingerprintDescriptor.ExtractTopWavelets(spectralImage.Image, configuration.TopWavelets, cachedIndexes);
                if (!image.IsSilence())
                {
                    fingerprints.Add(new Fingerprint(image, spectralImage.StartsAt, spectralImage.SequenceNumber));
                }

                return(cachedIndexes);
            },
                             cachedIndexes => { });

            return(fingerprints.ToList());
        }
Exemple #3
0
        internal IEnumerable <Fingerprint> CreateOriginalFingerprintsFromFrames(IEnumerable <Frame> frames, FingerprintConfiguration configuration)
        {
            var normalized = configuration.FrameNormalizationTransform.Normalize(frames);
            var blurred    = configuration.GaussianBlurConfiguration.GaussianFilter switch
            {
                GaussianFilter.None => normalized,
                _ => BlurFrames(normalized, configuration.GaussianBlurConfiguration)
            };

            var images = blurred.ToList();

            if (!images.Any())
            {
                return(Enumerable.Empty <Fingerprint>());
            }

            var fingerprints  = new ConcurrentBag <Fingerprint>();
            var length        = images.First().Length;
            var saveTransform = configuration.OriginalPointSaveTransform;

            Parallel.ForEach(images, () => new ushort[length], (frame, loop, cachedIndexes) =>
            {
                byte[] originalPoint = saveTransform(frame);
                float[] rowCols      = frame.ImageRowCols;
                waveletDecomposition.DecomposeImageInPlace(rowCols, frame.Rows, frame.Cols, configuration.HaarWaveletNorm);
                RangeUtils.PopulateIndexes(length, cachedIndexes);
                var image = fingerprintDescriptor.ExtractTopWavelets(rowCols, configuration.TopWavelets, cachedIndexes);
                if (!image.IsSilence())
                {
                    fingerprints.Add(new Fingerprint(image, frame.StartsAt, frame.SequenceNumber, originalPoint));
                }

                return(cachedIndexes);
            },
                             cachedIndexes => { });

            return(fingerprints.ToList());
        }