public static Vector <int>[,] ApplyDct(BitmapSource bitmap, DctParameters dctParameters) { var map = bitmap.GetMap(); var mapInYCbCr = ToYCbCr(map); var decimatedMap = Decimate(mapInYCbCr, dctParameters.DecimationType); var blocks = SplitToBlocks(decimatedMap, 8); var dct = GetDctMatrix(); var transposedDct = dct.Transpose(); var appliedDct = ApplyDct(blocks, dct, transposedDct); var quantizedDct = QuantizeMatrices(appliedDct, dctParameters); return(Flatten(quantizedDct)); }