CSJ2K.Color.SYccColorSpaceMapper.mult C# (CSharp) Method

mult() private static method

Output a DataBlkFloat array where each sample in each component is the product of the YCC matrix * the vector of samples across the input components.
private static mult ( CSJ2K.j2k.image.DataBlkFloat inblk ) : DataBlkFloat[]
inblk CSJ2K.j2k.image.DataBlkFloat input DataBlkFloat array ///
return DataBlkFloat[]
        private static DataBlkFloat[] mult(DataBlkFloat[] inblk)
        {
            if (inblk.Length != 3)
                throw new System.ArgumentException("bad input array size");

            int i, j;
            int length = inblk[0].h * inblk[0].w;
            DataBlkFloat[] outblk = new DataBlkFloat[3];
            float[][] out_Renamed = new float[3][];
            float[][] in_Renamed = new float[3][];

            for (i = 0; i < 3; ++i)
            {
                in_Renamed[i] = inblk[i].DataFloat;
                outblk[i] = new DataBlkFloat();
                copyGeometry(outblk[i], inblk[i]);
                outblk[i].offset = inblk[i].offset;
                out_Renamed[i] = new float[length];
                outblk[i].Data = out_Renamed[i];
            }

            for (j = 0; j < length; ++j)
            {
                out_Renamed[0][j] = (Matrix00 * in_Renamed[0][inblk[0].offset + j] + Matrix01 * in_Renamed[1][inblk[1].offset + j] + Matrix02 * in_Renamed[2][inblk[2].offset + j]);

                out_Renamed[1][j] = (Matrix10 * in_Renamed[0][inblk[0].offset + j] + Matrix11 * in_Renamed[1][inblk[1].offset + j] + Matrix12 * in_Renamed[2][inblk[2].offset + j]);

                out_Renamed[2][j] = (Matrix20 * in_Renamed[0][inblk[0].offset + j] + Matrix21 * in_Renamed[1][inblk[1].offset + j] + Matrix22 * in_Renamed[2][inblk[2].offset + j]);
            }

            return outblk;
        }

Same methods

SYccColorSpaceMapper::mult ( CSJ2K.j2k.image.DataBlkInt inblk ) : DataBlkInt[]