int Ymin=0,Cbmin=0,Crmin=0,Ymax=0,Cbmax=0,Crmax=0;
for( i=0 ; i<Im1H ; i++ ){
for( j=0 ; j<Im1W ; j++ )
{
if(Im1QuaY[i][j]<Ymin)
Ymin=Im1QuaY[i][j];//Y min after DCT
if(Im1QuaCb[i][j]<cbmin)
if(Im1QuaCb[i][j]<cbmin)
Cbmin=Im1QuaCb[i][j];//Cb min after DCT
if(Im1QuaCr[i][j]<Crmin)
Crmin=Im1QuaCr[i][j]; //Cr min after DCT
if(Im1QuaY[i][j]>Ymax)
if(Im1QuaY[i][j]>Ymax)
Ymax=Im1QuaY[i][j]; //Y max after DCT
if(Im1QuaCb[i][j]>Cbmax)
if(Im1QuaCb[i][j]>Cbmax)
Cbmax=Im1QuaCb[i][j]; //Cb max after DCT
if(Im1QuaCr[i][j]>Crmax)
if(Im1QuaCr[i][j]>Crmax)
Crmax=Im1QuaCr[i][j]; //Cr max afterDCT }}
/******************************************************
*求出Y,Cb,Cr最大最小值後,換算該範圍
*用於調整長條圖的對稱性
*******************************************************/
if(Ymax>abs(Ymin)){
if(Ymax>abs(Ymin)){
DCTYrange=Ymax*2;
YRange=Ymax;
}
else{
DCTYrange=abs(Ymin)*2;
YRange=abs(Ymin);
}
if(Cbmax>abs(Cbmax)){
if(Cbmax>abs(Cbmax)){
DCTCbrange=Cbmax*2;
CbRange=Cbmax;
}
else{
DCTCbrange=abs(Cbmin)*2;
CbRange=abs(Cbmin);
}
if(Crmax>abs(Crmin)){
if(Crmax>abs(Crmin)){
DCTCrrange=Crmax*2;
CrRange=Crmax;
}
else{
DCTCrrange=abs(Crmin)*2;
CrRange=abs(Crmin);
}
//DCTYrange = Ymax-Ymin;
//DCTCbrange= Cbmax-Cbmin;
//DCTCrrange= Crmax-Crmin;
//↑要改一下....因為這樣左右不平衡....囧
RecordY=new int[DCTYrange];
RecordY=new int[DCTYrange];
RecordCb=new int[DCTCbrange];
RecordCr=new int[DCTCrrange];
for(i=0;i<DCTYrange;i++)
RecordY[i]=0;
for(i=0;i<DCTCbrange;i++)
RecordCb[i]=0;
for(i=0;i<DCTCrrange;i++)
RecordCr[i]=0;
//計算Histogram的高度
//計算Histogram的高度
for( i=0 ; i<Im1H; i++ )
for( j=0 ; j<Im1W; j++ )
{
tempY=Im1QuaY[i][j] + YRange ;
RecordY[ tempY ]++;
tempCb=Im1QuaCb[i][j] + CbRange;
tempCb=Im1QuaCb[i][j] + CbRange;
RecordCb[ tempCb ]++;
tempCr=Im1QuaCr[i][j] + CrRange;
tempCr=Im1QuaCr[i][j] + CrRange;
RecordCr[ tempCr ]++;
}
Ymax=0;Cbmax=0;Crmax=0;
Ymax=0;Cbmax=0;Crmax=0;
for( i=0 ; i<DCTYrange ; i++ )
{
if(RecordY[i]>Ymax)
Ymax=RecordY[i];
}
for( i=0 ; i<DCTCbrange ; i++ )
{
if(RecordCb[i]>Cbmax)
Cbmax=RecordCb[i];
}
for( i=0 ; i
Image7->Picture->Bitmap->Width=DCTCrrange*2;
{
if(RecordCr[i]>Crmax)
Crmax=RecordCr[i];
}
Image5->Picture->Bitmap->Width= DCTYrange*2;
Image5->Picture->Bitmap->Width= DCTYrange*2;
Image5->Picture->Bitmap->Height=Ymax;
Image5->Picture->Bitmap->PixelFormat=pf24bit;
Image5->AutoSize=true;
Image6->Picture->Bitmap->Width=DCTCbrange*2;
Image6->Picture->Bitmap->Height=Cbmax;
Image6->Picture->Bitmap->PixelFormat=pf24bit;
Image6->AutoSize=true;
Image7->Picture->Bitmap->Width=DCTCrrange*2;
Image7->Picture->Bitmap->Height=Crmax;
Image7->Picture->Bitmap->PixelFormat=pf24bit;
Image7->AutoSize=true;
for( i=0 ; i<DCTYrange ; i++ )
for( i=0 ; i<DCTYrange ; i++ )
{
j=RecordY[i];
k=Ymax;
Image5->Canvas->MoveTo(i*2,k);
Image5->Canvas->LineTo(i*2,k-j);
} for( i=0 ; i<DCTCbrange ; i++ )
{
j=RecordCb[i];
k=Cbmax;
Image6->Canvas->MoveTo(i*2,k);
Image6->Canvas->LineTo(i*2,k-j);
}
for( i=0 ; i<DCTCrrange ; i++ )
{
j=RecordCr[i];
k=Crmax;
Image7->Canvas->MoveTo(i*2,k);
Image7->Canvas->LineTo(i*2,k-j);
}
沒有留言:
張貼留言