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); }
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]; } }
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 } }; }