2007年7月26日 星期四

DCT-OPEN

if(OpenPictureDialog1->Execute())
{
  Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
}
  Image1->AutoSize=true;
  Im1H = Image1->Height;
  Im1W = Image1->Width;
  Image1->Picture->Bitmap->Width=Im1W;
  Image1->Picture->Bitmap->Height=Im1H;
  Image1->Picture->Bitmap->PixelFormat=pf24bit;
  Im1R=new int *[Im1H];
  Im1G=new int *[Im1H];
  Im1B=new int *[Im1H];
  Im1Y=new double *[Im1H];
  Im1Cb=new double *[Im1H];
  Im1Cr=new double *[Im1H];
  Im1DCTY=new double *[Im1H];
  Im1DCTCb=new double *[Im1H];
  Im1DCTCr=new double *[Im1H];
  Im1QuaY=new double *[Im1H];
  Im1QuaCb=new double *[Im1H];
  Im1QuaCr=new double *[Im1H];
  for( i=0; i<Im1H ; i++ )
  {
    Im1R[i]=new int[Im1W];
    Im1G[i]=new int[Im1W];
    Im1B[i]=new int[Im1W];
Im1Y[i]=new double[Im1W];
    Im1Cb[i]=new double[Im1W];
    Im1Cr[i]=new double[Im1W];
    Im1DCTY[i]= new double[Im1W];
    Im1DCTCb[i]= new double[Im1W];
    Im1DCTCr[i]= new double[Im1W];
    Im1QuaY[i]=new double [Im1W];
    Im1QuaCb[i]=new double [Im1W];
    Im1QuaCr[i]=new double [Im1W];
  }
  for( i=0 ; i  {
    ptr =(Byte *)Image1->Picture->Bitmap->ScanLine[i];
    for( j=0 ; j<Im1W; j++ )
    {
      Im1R[i][j]=(int)ptr[j*3+2];
      tempR=ptr[j*3+2];
      RecordR[tempR]++;
      //****************
      Im1G[i][j]=(int)ptr[j*3+1];
      tempG=ptr[j*3+1];
      RecordG[tempG]++;
      //****************
      Im1B[i][j]=(int)ptr[j*3];
      tempB=(int)ptr[j*3];
      RecordB[tempB]++;
      //=====Y,Cb,Cr分格線=====
      Im1Y[i][j]=0.2990*(double)tempR+0.5870*(double)tempG+0.1140*(double)tempB;
      Im1Cb[i][j]=0.1687*(double)tempR-0.3313*(double)tempG+0.5000*(double)tempB;
      Im1Cr[i][j]=0.5000*(double)tempR-0.4187*(double)tempG-0.0813*(double)tempB;
    }
  }

沒有留言: