public List <double> GetSynthesis(WaveletAnalysisCollection analysisCollection)
        {
            var reconstructedValues = new List <double>();

            var scaledUpLow  = UpscaleLow(analysisCollection.RearrangedLow);
            var scaledUpHigh = UpscaleHigh(analysisCollection.RearrangedHigh);

            var formattedLow  = WaveletValuesListMirroringHelper.GetValuesListWithMirroredExtremities(scaledUpLow);
            var formattedHigh = WaveletValuesListMirroringHelper.GetValuesListWithMirroredExtremities(scaledUpHigh);

            for (var i = 0; i < analysisCollection.RearrangedLow.Count + analysisCollection.RearrangedHigh.Count; i++)
            {
                var low  = 0d;
                var high = 0d;

                for (var j = 0; j < 9; j++)
                {
                    low  += formattedLow[i + j] * synthesisLowCoefficients[j];
                    high += formattedHigh[i + j] * synthesisHighCoefficients[j];
                }

                reconstructedValues.Add(low + high);
            }

            return(reconstructedValues);
        }
        public WaveletAnalysisCollection GetAnalysis(List <double> values)
        {
            var analysisCollection = new WaveletAnalysisCollection();
            var formattedValues    = WaveletValuesListMirroringHelper.GetValuesListWithMirroredExtremities(values);

            for (var i = 0; i < values.Count; i++)
            {
                var low  = 0d;
                var high = 0d;

                for (var j = 0; j < 9; j++)
                {
                    low  += formattedValues[i + j] * analysisLowCoefficients[j];
                    high += formattedValues[i + j] * analysisHighCoefficients[j];
                }

                if (i % 2 == 0)
                {
                    low = Math.Round(low, 6);
                    analysisCollection.RearrangedLow.Add(low);
                }
                else
                {
                    high = Math.Round(high, 6);
                    analysisCollection.RearrangedHigh.Add(high);
                }
            }

            return(analysisCollection);
        }
Beispiel #3
0
        private void CopyColumnAnalysis(WaveletAnalysisCollection analysisCollection, int columnNumber)
        {
            for (var rowNumber = 0; rowNumber < analysisCollection.RearrangedLow.Count; rowNumber++)
            {
                ImageCodes[rowNumber, columnNumber] = analysisCollection.RearrangedLow[rowNumber];
            }

            for (var rowNumber = 0; rowNumber < analysisCollection.RearrangedHigh.Count; rowNumber++)
            {
                ImageCodes[rowNumber + analysisCollection.RearrangedLow.Count, columnNumber] = analysisCollection.RearrangedHigh[rowNumber];
            }
        }
Beispiel #4
0
        private void SetupCase1()
        {
            values = new List <double> {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 9, 9, 3, 2, 7, 5, 2, 8, 2, 55, 2, 7, 3, 1, 6, 9, 1, 3, 2, 66
            };

            expectedResult = new WaveletAnalysisCollection
            {
                RearrangedLow = new List <double> {
                    1.333641,
                    3.073267,
                    5.000000,
                    6.963367,
                    8.833180,
                    8.802874,
                    9.533891,
                    3.550919,
                    5.705122,
                    3.143611,
                    17.770563,
                    17.422570,
                    2.318917,
                    5.911796,
                    2.183380,
                    19.369724
                },
                RearrangedHigh = new List <double>
                {
                    0.250000,
                    0.000000,
                    0.000000,
                    -0.125000,
                    -0.125000,
                    -0.547631,
                    3.767892,
                    -3.484163,
                    0.134913,
                    3.924444,
                    58.557907,
                    2.356987,
                    -4.853240,
                    6.123066,
                    -2.014144,
                    71.067941
                }
            };
        }