?? transform2.c
字號:
//// for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
//// {
//// *mptr = *mptr / acqfact;
//// }
////#else
// if (acqfact&1) /* Odd */
// {
// acqfact<<=1;
// for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
// *mptr = *mptr / acqfact;
// }
// else
// {
// acqfact<<=1;
// for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
// {
// if (*mptr>0)
// *mptr = (*mptr+1) / acqfact;
// else
// *mptr = (*mptr-1) / acqfact;
// }
// }
////#endif
//}
//
/*BFUNC
ICCITTFlatQuantize2() does an inverse flat quantize on the dc element
and an inverse thresholded quantize on the ac elements of the input
matrix.
EFUNC*/
//void ICCITTFlatQuantize2(matrix,dcqfact,acqfact)
// int *matrix;
// int dcqfact;
// int acqfact;
void ICCITTFlatQuantize2(int *matrix,int dcqfact,int acqfact)
{
BEGIN("ICCITTFlatQuantize2");
int *mptr;
*matrix = *matrix*dcqfact;
//#ifdef VERSION_1_0
// acqfact++;
// for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
// {
// if (*mptr>0)
// {
// *mptr = ((*mptr<<1) + 1)*acqfact;
// }
// else if (*mptr<0)
// {
// *mptr = ((*mptr<<1) - 1)*acqfact;
// }
// }
//#else
if (acqfact&1) /* Odd */
{
for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
{
if (*mptr>0)
{
*mptr = ((*mptr<<1) + 1)*acqfact;
}
else if (*mptr<0)
{
*mptr = ((*mptr<<1) - 1)*acqfact;
}
}
}
else
{
for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
{
if (*mptr>0)
{
*mptr = (((*mptr<<1) + 1)*acqfact)-1;
}
else if (*mptr<0)
{
*mptr = (((*mptr<<1) - 1)*acqfact)+1;
}
}
}
//#endif
}
/*BFUNC
ICCITTQuantize2() does an inverse quantize on the dc element and the ac
element with their selective q values, respectively.
EFUNC*/
//void ICCITTQuantize2(matrix,dcqfact,acqfact)
// int *matrix;
// int dcqfact;
// int acqfact;
void ICCITTQuantize2(int *matrix,int dcqfact,int acqfact)
{
BEGIN("ICCITTQuantize2");
int *mptr;
//#ifdef VERSION_1_0
// dcqfact++;
// acqfact++;
// if (*matrix>0) {*matrix = (2* *matrix + 1)*dcqfact;}
// else if (*matrix<0) {*matrix = (2* *matrix - 1)*dcqfact;}
// for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
// {
// if (*mptr>0) {*mptr = (2* *mptr + 1)*acqfact;}
// else if (*mptr<0) {*mptr = (2* *mptr - 1)*acqfact;}
// }
//#else
if (dcqfact&1)
{
if (*matrix>0) {*matrix = ((*matrix<<1) + 1)*dcqfact;}
else if (*matrix<0) {*matrix = ((*matrix<<1) - 1)*dcqfact;}
}
else
{
if (*matrix>0) {*matrix = (((*matrix<<1) + 1)*dcqfact)-1;}
else if (*matrix<0) {*matrix = (((*matrix<<1) - 1)*dcqfact)+1;}
}
if (acqfact&1) /* Odd */
{
for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
{
if (*mptr>0) {*mptr = ((*mptr<<1) + 1)*acqfact;}
else if (*mptr<0) {*mptr = ((*mptr<<1) - 1)*acqfact;}
}
}
else
{
for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
{
if (*mptr>0) {*mptr = (((*mptr<<1) + 1)*acqfact)-1;}
else if (*mptr<0) {*mptr = (((*mptr<<1) - 1)*acqfact)+1;}
}
}
//#endif
}
/*BFUNC
BoundDctMatrix_en() clips the Dct matrix such that it is no larger than
a 10 bit word.
EFUNC*/
//void BoundDctMatrix_en(matrix)
// int *matrix;
//void BoundDctMatrix_en(int *matrix)
//{
// BEGIN("BoundDctMatrix_en");
// int *mptr;
//
// if (*matrix > 2047)
// {
// *matrix = 2047;
// }
// for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
// {
// if (*mptr < -1023)
// {
// *mptr = -1023;
// }
// else if (*mptr > 1023)
// {
// *mptr = 1023;
// }
// }
//}
//
/*BFUNC
BoundIDctMatrix2 bounds the inverse dct matrix so that no pixel has a
value greater than 255 or less than 0.
EFUNC*/
//void BoundIDctMatrix2(matrix)
// int *matrix;
void BoundIDctMatrix2(int *matrix)
{
BEGIN("BoundIDctMatrix2");
int *mptr;
for(mptr=matrix;mptr<matrix+BLOCKSIZE;mptr++)
{
if (*mptr < 0) {*mptr = 0;}
else if (*mptr > 255) {*mptr = 255;}
}
}
/*BFUNC
FlatBoundQuantizeMatrix_en() bounds a quantized matrix generated by
CCITTFlatQuantize_en().
EFUNC*/
//void FlatBoundQuantizeMatrix_en(matrix)
// int *matrix;
//void FlatBoundQuantizeMatrix_en(int *matrix)
//{
// BEGIN("FlatBoundQuantizeMatrix_en");
// int *mptr;
//
// if (*matrix > 254) {*matrix = 254;}
// else if (*matrix < 1) {*matrix = 1;}
// for(mptr=matrix+1;mptr<matrix+BLOCKSIZE;mptr++)
// {
// if (*mptr < -127) {*mptr = -127;} /* Should this be a -127? */
// else if (*mptr > 127) {*mptr = 127;}
// }
//}
/*BFUNC
BoundQuantizeMatrix_en() bounds a quantized matrix generated by
CCITTQuantize_en().
EFUNC*/
//
//void BoundQuantizeMatrix_en(matrix)
// int *matrix;
//void BoundQuantizeMatrix_en(int *matrix)
//{
// BEGIN("BoundQuantizeMatrix_en");
// int *mptr;
//
// for(mptr=matrix;mptr<matrix+BLOCKSIZE;mptr++)
// {
// if (*mptr < -127)
// {
// *mptr = -127;
// } /* Should this be a -127? */
// else if (*mptr > 127)
// {
// *mptr = 127;
// }
// }
//}
//
/*BFUNC
IZigzagMatrix2() performs an inverse zig-zag translation on the
input imatrix and places the output2 in omatrix.
EFUNC*/
//void IZigzagMatrix2(imatrix,omatrix)
// int *imatrix;
// int *omatrix;
void IZigzagMatrix2(int *imatrix,int *omatrix)
{
BEGIN("IZigzagMatrix2");
int *tptr;
for(tptr=zigzag_index2;tptr<zigzag_index2+BLOCKSIZE;tptr++)
{
*(omatrix) = imatrix[*tptr];
//fprintf(fp,"*(omatrix) = %d\timatrix[%d]=%d\n",*(omatrix),*tptr,imatrix[*tptr]);
omatrix++;
}
}
/*BFUNC
ZigzagMatrix_en() performs a zig-zag translation on the input imatrix
and puts the output2 in omatrix.
EFUNC*/
//void ZigzagMatrix_en(imatrix,omatrix)
// int *imatrix;
// int *omatrix;
//void ZigzagMatrix_en(int *imatrix,int *omatrix)
//{
// BEGIN("ZigzagMatrix_en");
// int *tptr;
//
// for(tptr=zigzag_index2;tptr<zigzag_index2+BLOCKSIZE;tptr++)
// {
// omatrix[*tptr] = *(imatrix++);
// }
//}
/*BFUNC
PrintMatrix() prints an 8x8 matrix in row/column form.
EFUNC*/
//void PrintMatrix(matrix)
// int *matrix;
//void PrintMatrix(int *matrix)
//{
// BEGIN("PrintMatrix");
// int i,j;
//
// if (matrix)
// {
// for(i=0;i<BLOCKHEIGHT;i++)
// {
// for(j=0;j<BLOCKWIDTH;j++) {printf("%6d ",*(matrix++));}
// printf("\n");
// }
// }
// else {printf("Null\n");}
//}
//
/*BFUNC
ClearMatrix() sets all the elements of a matrix to be zero.
EFUNC*/
//
//void ClearMatrix(matrix)
// int *matrix;
//void ClearMatrix(int *matrix)
//{
// BEGIN("ClearMatrix");
// int *mptr;
//
// for(mptr=matrix;mptr<matrix+BLOCKSIZE;mptr++) {*mptr = 0;}
//}
/*END*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -