public void DecodeImage(IDownSampler downSampler, QuantizeMethod quantizeMethod, int quantizeParameter) { GetQuantizeds(quantizeMethod, quantizeParameter, out var quantizedY, out var quantizedCb, out var quantizedCr); var iQuantizedY = new double[256, 256]; var iQuantizedCb = new double[128, 128]; var iQuantizedCr = new double[128, 128]; if (quantizeMethod == QuantizeMethod.ZigZag) { iQuantizedY = quantizedY.GetIQuantizeUsingZigZagMethod(quantizeParameter); iQuantizedCb = quantizedCb.GetIQuantizeUsingZigZagMethod(quantizeParameter); iQuantizedCr = quantizedCr.GetIQuantizeUsingZigZagMethod(quantizeParameter); } if (quantizeMethod == QuantizeMethod.Method2) { iQuantizedY = quantizedY.GetIQuantizeUsingMethod2(quantizeParameter); iQuantizedCb = quantizedCb.GetIQuantizeUsingMethod2(quantizeParameter); iQuantizedCr = quantizedCr.GetIQuantizeUsingMethod2(quantizeParameter); } if (quantizeMethod == QuantizeMethod.JpegQuality) { iQuantizedY = quantizedY.GetIQuantizeUsingJpegQualityMethod(quantizeParameter); iQuantizedCb = quantizedCb.GetIQuantizeUsingJpegQualityMethod(quantizeParameter); iQuantizedCr = quantizedCr.GetIQuantizeUsingJpegQualityMethod(quantizeParameter); } var iDctY = dct.GetIDiscreteCosineTransform(iQuantizedY); var iDctCb = dct.GetIDiscreteCosineTransform(iQuantizedCb); var iDctCr = dct.GetIDiscreteCosineTransform(iQuantizedCr); var upSampledCb = downSampler.GetUpSampledMatrix(iDctCb); var upSampledCr = downSampler.GetUpSampledMatrix(iDctCr); var yCbCrPixels = new YCbCrPixel[256, 256]; for (int i = 0; i < 256; i++) { for (int j = 0; j < 256; j++) { yCbCrPixels[i, j] = new YCbCrPixel { Y = (byte)iDctY[i, j], Cb = (byte)upSampledCb[i, j], Cr = (byte)upSampledCr[i, j] }; } } ReconstructedImage = GetBitmapFromYCbCrPixels(yCbCrPixels); }
public void Setup() { var dependencyResolver = new DependencyResolver(); jpegEncoder = (JpegEncoder)dependencyResolver.GetObject <IJpegEncoder>(); downSampler = new DownSampler411(); filePathSource = $"{Environment.CurrentDirectory}\\temp.bmp"; filePathEncodedFile = $"{Environment.CurrentDirectory}\\temp.bmp.pre"; filePathDecodedFile = $"{Environment.CurrentDirectory}\\temp.png.pre.jpg"; TestMethods.CopyFileAndReplaceIfAlreadyExists($"{Environment.CurrentDirectory}\\Images\\TestImage1.bmp", filePathSource); }
public void EncodeImage(IFileReader fileReader, IDownSampler downSampler) { GetImageFromFileReader(fileReader); var pixels = GetYCbCrPixelsFromImage(OriginalImage); GetMatrices(pixels, out var yMatrix, out var cbMatrix, out var crMatrix); var downSampledCbMatrix = downSampler.GetDownSampledMatrix(cbMatrix); var downSampledCrMatrix = downSampler.GetDownSampledMatrix(crMatrix); DctY = dct.GetDiscreteCosineTransform(yMatrix); DctCb = dct.GetDiscreteCosineTransform(downSampledCbMatrix); DctCr = dct.GetDiscreteCosineTransform(downSampledCrMatrix); }