コード例 #1
0
ファイル: DCT.c プロジェクト: Berk0ld/ImageCompession
void idct(int colors[8][8], const double data[8][8])
{
	int u,v,x,y;
    
	/* iDCT */
	for (y=0; y<8; y++) {
        for (x=0; x<8; x++)
        {
            double z = 0.0;
            
            for (v=0; v<8; v++)
                for (u=0; u<8; u++)
                {
                    double S, q;
                    double Cu, Cv;
                    
                    COEFFS(Cu,Cv,u,v);
                    S = data[v][u];
                    
                    q = Cu * Cv * S *
                    cos((double)(2*x+1) * (double)u * PI/16.0) *
                    cos((double)(2*y+1) * (double)v * PI/16.0);
                    
                    z += q;
                }
            
            z /= 4.0;
            if (z > 255.0) z = 255.0;
            if (z < 0) z = 0.0;
            
            colors[x][y] = (unsigned char) z;
        }
    }
}
コード例 #2
0
ファイル: listing3.c プロジェクト: dk00/old-stuff
void idct(tga_image *tga, double data[8][8], const int xpos, const int ypos)
{
	int u,v,x,y;

	/* iDCT */
	for (y=0; y<8; y++)
	for (x=0; x<8; x++)
	{
		double z = 0.0;

		for (v=0; v<8; v++)
		for (u=0; u<8; u++)
		{
			double S, q;
			double Cu, Cv;
			
			COEFFS(Cu,Cv,u,v);
			S = data[v][u];

			q = Cu * Cv * S *
				cos((double)(2*x+1) * (double)u * PI/16.0) *
				cos((double)(2*y+1) * (double)v * PI/16.0);

			z += q;
		}

		z /= 4.0;
		if (z > 255.0) z = 255.0;
		if (z < 0) z = 0.0;

		pixel(tga, x+xpos, y+ypos) = (uint8_t) z;
	}
}
コード例 #3
0
arma::mat compute_dct(arma::mat& inp) {
  arma::mat out(8,8);
  for(int v = 0; v < 8; v++) {
    for(int u = 0; u < 8; u++) {
      double Cu, Cv, z = 0.0;
      COEFFS(Cu,Cv,u,v);
      for(int y = 0; y < 8; y++) {
	for(int x = 0; x < 8; x++) {
	  double s, q;
	  s = inp.at(x,y);
	  q = s * cos((double)(2*x+1) * (double)u * M_PI/16.0) *
	    cos((double)(2*y+1) * (double)v * M_PI/16.0);
	  z += q;
	}}
      out.at(u,v) = 0.25 * Cu * Cv * z;
    }}
  return out;
}