intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo trình xử lý ảnh y tế Tập 3 P13

Chia sẻ: Cinny Cinny | Ngày: | Loại File: PDF | Số trang:9

106
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Con người nhanh hơn 100 lần bất kỳ một loại máy tính hiện đại nào, với ưu điểm hơn hẳn về kích thước nhỏ gọn và đòi hỏi ít hơn hẳn năng lượng. Một tính chất cũng cần phải nói tới là bộ não con người được thiết kế để xử lý ba chiều. Trong khi đó, các mạch tích hợp thường là hai chiều, và với sự tiến bộ ngày nay việc thiết kế mạch tích hợp ba chiều vẫn chưa được hoàn thiện hoặc thậm chí cũng không gần được như kiểu tích hợp ba chiều của bộ não con người....

Chủ đề:
Lưu

Nội dung Text: Giáo trình xử lý ảnh y tế Tập 3 P13

  1. printf ("\nEnter block size (e.g. 8x8, 16x 16, etc.)--> "); scanf ( "%dx%d", &NB,&NB); m=(int)(log10((double)NB)/log10((double)2.0)); NT=N*NB; /*------------------------------ Blocks of NBxNB will be considered. -------------------------------*/ /* ------------------ Assigning memory. ----------------- */ buffi=(float *)malloc(NT*sizeof(float)); buffo=(unsigned char *)malloc(NT*sizeof(char)); x=(float *)malloc(NB*sizeof(float)); L=(unsigned int *)malloc(NB*sizeof(int)); C=(float *)malloc((NB-1)*sizeof(float)); w=(float **)malloc(NB*sizeof(float *)); for(i=0;i>m); /* ------------------------------------ 2-D FCT using the row-column approach. ----------------------------------- */ for(i=0;i
  2. x[k1]=w[k1][k2]; FCT(x,L,C,m,NB); for(k1=0;k1
  3. for(i=1;i=1; } /*Bit reversal. */ for(i=0; i
  4. if(i2); NK2=(N>>1); kk=1; for(iter=1;iter
  5. C|=A; MASK1; NK2=N=1; } for(i=0;i
  6. phép biến đổi ngược của một bướm. Kết quả của thuật toán biến đổi ngược của lưu đồ FCT cho trong hình 13.12. Từ lưu đồ của hình 13.11 biến đổi ngược của FCT có thể phát triển b ình thường từ FCT tiến. Ch ương trình tính 2-D FCT ngược cho trong chương trình 13.6. Giá trị của khối ảnh gốc phải được cho trước bởi ngư ời dùng. 0.5 C A C A C D B B D X -1 -1 A=C+D 1 /2CX C=0.5A+B/(2CX) B=(C-D)CX D=0.5A-B/(2CX) Hình 13.11 Phép đổi ngư ợc của một b ướm. 0. 0. 0. ~(0) x X(0 1 ) ~(1) 0. 0. 2C x 4 X(1 -1 51 5 0. 0. ~(2) Dịch chuyển bit. 4C8 x X(2 1 -1 1 ) 2C 0. ~(3) 5 4C8 4 X(3 x + -1 -1 51 ) 0. 0. ~(4) C 16 x X(4 1 -1 1 5 5 0. 2C 5 ~(5) C16 4 x X(5 + 1 -1 -1 1 ) 0. ~(6) 9 4C8 C16 x X(6 + 1 -1 -1 1 1 5 2C 13 ~(7) C16 4C8 4 x X(7 + + -1 -1 -1 ) H ình 13.12 Biểu đồ đảo ngư ợc giải thuật FCT. Chương trình 13.6 "IFCT2D.C". Đảo ngược FCT. Kích thước khối sử dụng trên ả nh gốc. /*Program 13.6 "IFCT2D.C". Inverse FCT. Block size used on the original image should be known to the user.*/ /* This program is for carrying out the inverse of the 2-D Fast Cosine Transform. */ #define PI 3.14159 #include #include 353
  7. #include #include #include #include void IFCT(float *, unsigned int *, float *, int , int ); void bit_reversal(unsigned int *, int , int ); void WTSINV(float *,int, int); void main() { int m,N,i,j,k1,k2,NB,NT,NS,k; float *x,*C,**w; unsigned int *L; double nsq; FILE *fptri, *fptro; char file_name[14] ; float *buffi ; unsigned char *buffo; clrscr(); printf ( "This program is for the inverse 2-D FCT . \n" ) ; printf ( "Enter name of input file --->") ; scanf ("%s " , file_name) ; fptri=fopen(file_name, " rb"); if( fptri ==NULL) { printf("\nNo such file exists.\n"); exit(1); } nsq=(double)filelength(fileno(fptri)); /*-------------------- Assume image is square, ----------------------*/ N=(int)sqrt(nsq/sizeof(float)); m=(int)(log10((double)N)/log10((double)2.0)); k=1; for(i=0; i
  8. printf(" which are multiples of 2. \n "); exit(1); } printf("Enter name for Output file - - -> " ) ; scanf("%s", file_name); fptro=fopen(file_name,"wb"); printf("\nEnter block size used (e.g. 8x8,16xI6,etc.) -->"); scanf("%dx%d",&NB,&NB); m=(int)(log10((double)NB)/log10((double)2.0)); NT=N*NB; /*----------------------------- Blocks of NBxNB were considered. --------------------------------*/ /* ------------------ Assigning memory. ----------------- */ buffi=(float *)malloc(NT*sizeof(float)); buffo=(unsigned char *)malloc(NT*sizeof(char)); x=(float *)malloc(NB*sizeof(float)); L=(unsigned int *)malloc(NB*sizeof(int)); C=(float *)malloc((NB-1)*sizeof(float)); w=(float **)malloc(NB*sizeof(float *)); for(i=0;i>m) ; /*------------------------------------ 2-D inverse FCT using the row-column approach. ----------------------------------- */ for(i=0;i
  9. IFCT(x,L,C,m,NB); for(k2=0;k2
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2