Danh mục

Nén Ảnh part 8

Số trang: 12      Loại file: pdf      Dung lượng: 211.81 KB      Lượt xem: 15      Lượt tải: 0    
Thư viện của tui

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Nếu người dùng cho tên ‘image1q’ khi trả lời cho thông báo “Enter file name to store quantized image ...” xuất hiện khi chạy chương trình, ba file sau đây được tạo ra: 1. ‘image1q.hdr’, là file chứa thông tin về header. 2. ‘image1q.dc’ là file chứa thông tin về các hệ số một chiều bị cắt bớt của một loạt các khối. 3. ‘image1q.ac’ file chứa một loạt các lượng tử cho các hệ số AC của một loạt các khối. Phần này không chứa thông tin về các giá trị bị loại bỏ, nếu chúng ta coi rằng...
Nội dung trích xuất từ tài liệu:
Nén Ảnh part 8 Ch¬ng tr×nh 13.11 ®a ra lîng tö cña c¸c hÖ sè biÕn ®æi cosin dïngc¸c bíc trªn. KÕt qu¶ cña ch¬ng tr×nh lµ 3 file cã cïng tªn do ngêidïng x¸c ®Þnh, nhng cã phÇn më réng kh¸c nhau. NÕu ngêi dïng chotªn ‘image1q’ khi tr¶ lêi cho th«ng b¸o “Enter file name to storequantized image ...” xuÊt hiÖn khi ch¹y ch¬ng tr×nh, ba file sau ®©y ®îct¹o ra: 1. ‘image1q.hdr’, lµ file chøa th«ng tin vÒ header. 2. ‘image1q.dc’ lµ file chøa th«ng tin vÒ c¸c hÖ sè mét chiÒu bÞ c¾t bít cña mét lo¹t c¸c khèi. 3. ‘image1q.ac’ file chøa mét lo¹t c¸c lîng tö cho c¸c hÖ sè AC cña mét lo¹t c¸c khèi. PhÇn nµy kh«ng chøa th«ng tin vÒ c¸c gi¸ trÞ bÞ lo¹i bá, nÕu chóng ta coi r»ng nã cã gi¸ trÞ 0 vµ ma trËn vïng chØ ra vÞ trÝ cña nã trong khèi. Ch¬ng tr×nh nhËp c¸c tªn sau ®©y do ngêi dïng ®Æt: 1. Tªn file chøa biÕn ®æi cosin cña mét ¶nh bÞ nÐn, vµ kÝch thíc cña khèi dïng trong FCT. 2. Tªn file chøa d÷ liÖu lîng tö Lloyd-Max. NÕu b¹n ch¹y MAXQ1.EXE (xem bµi tËp 13.8), vµ cho tªn file chøa c¸c møc lîng tö mµ b¹n muèn dïng. Lîng tö 5 bit Laplace cho kÕt qu¶ tuyÖt vêi. Lîng tö 4 bit Laplace cho b¹n mét kÕt qu¶ cã thÓ chÊp nhËn ®îc, nh lµ mét kinh nghiÖm cho b¹n. 3. PhÇn tr¨m cña c¸c hÖ sè AC ®îc gi÷ l¹i. B¹n cã thÓ lùa chän bÊt kú gi¸ trÞ nµo: th«ng thêng lµ 0.25 hoÆc lµ 0.5. C¸c ph©n sè nhá h¬n hay møc thÊp h¬n c¸c møc lîng tö g©y nªn mét sai sè cao h¬n khi kh«i phôc l¹i ¶nh. 4. Tªn file chøa c¸c lîng tö ho¸ cña ¶nh. §Ó tr¶ lêi, b¹n cho tªn file kh«ng cã phÇn më réng nh ®· nãi tríc ®©y. Ch¬ng tr×nh 13.11 QUANTIZE.C Ch¬ng tr×nh cho lîng töho¸ vµ nÐn kÕt qu¶ cña biÕn ®æi FCT./*---------------------------------This program does quantization on the blockDCT of an image . The input file should be theblock DCT transform o the image. The programalso designs a quantizer based on the statisticsof the DCT coefficients.You should first run either the program for 393the Lloyd-Max or the one for Lloyd quantizerdesign if you havent already done so.-----------------------------------------*/#include #include #include #include #include #include #include void main() { int N,i,j,k,M,xt,yt,N1,NS,k1,k2,NB,Nt; int m,kk,kk1,kk2,kt; unsigned long int NC,NQ,loc,loc1; float nsq,*sigma,*d,sum,*histo,*x,*mu; float denom,mut,sigmat,*sumd,*sumdsq; float Max,Min,h,*r,dt,rt,fdct,smax; int b,*T; FILE *fptri,*fptro,*fptro1; char file_name[14],*imaget,temp[14]; float *buffi; unsigned char ch; clrscr(); printf(This program carries out quantization onthe block); printf( DCT of an image. The 2-D FCT shouldbe run on the); printf( image prior to this program. If youhavent, just); printf( enter NULL to the first prompt thiswill return you); printf( to DOS. ); printf( You will need also to run theprogram MAXQ for); printf( designing the Max quantizer. Theprogram will); printf( modify the decision andreconstruction levels of); 394 printf( the quantizer to fit the results tothe statistics); printf( of the DCT data. ); printf(Enter name of input file containing 2-DFCT results-->); scanf(s,file_name); fptri=fopen(file_name,rb); if(fptri==NULL) { printf( No such file exists. ); exit(1); }nsq=filelength(fileno(fptri)); /*--------------------- Assume image is square. -----------------------*/N=(int)sqrt((double)(nsq/sizeof(float)));m=(int)(log10((double)N)/log10((double)2.0));k=1;for( i=0; isumd=(float *)malloc(Nt*sizeof(float));sumdsq=(float *)malloc(Nt*sizeof(float));sigma=(float *)malloc(Nt*sizeof(float));mu=(float *)malloc(Nt*sizeof(float));xt=wherex();yt=wherey();gotoxy(70,25);textattr(WHITE+(GREEN {sigma[i]=fabs((((float)NC)*sumdsq[i]-(sumd[i]*sumd[i]))/denom);sigma[i]=(float)sqrt((double)sigma[i]);mu[i]=sumd[i]/(float)NC; }free(sumd);free(sumdsq);rewind(fptri); /*Rewind input file.*/xt=wherex();yt=wherey();gotoxy(70,25);textattr(WHITE+(BLACKprintf ( Generating the distribution of thea.c. );printf ( coefficients of the Cosinetransform. );/*scaling and generating histogram ofa.c. coeff i ci ents . */Max=1.e-20;Min=1.e20 ; for (i=0; iprintf( retained per block (e.g. 0.25, 0.5,etc.) --->);scanf ( %f, &fdct);xt=wherex();yt=wherey();gotoxy(70,25);textattr(WHITE+(GREEN { loc1=kk+k1*N; kk2=k1*NB ; for(k2=0;k2fclose(fptro); }xt=wherex();yt=wherey();gotoxy(70, 25);textattr(WHITE+(BLACKrewind(fptro);i=0;while(1) { k=fscanf(fptro, %f %f,&d[i],&r[i]); if(k==EOF) break; d[i]=d[i]*sigmat; r[i]=r[i]*sigmat; i++; }fclose(fptro); /*Close file containingdistribution.*//* Header information: Block size, image size, number of quantizationlevels, zonal sampling matrix, ...

Tài liệu được xem nhiều:

Gợi ý tài liệu liên quan: