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 P17

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

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

Lượng tử hoá các hệ số của FCT Trong phần 13.4 chúng ta đã bắt đầu vấn đề của biến đổi cho mã hoá. Phương pháp chúng ta áp dụng là chia ảnh thành các khối hình vuông; Biến đổi cosin nhanh cho mỗi khối này đã được rút ra. Chúng ta nhận thấy rằng hầu hết các hệ số này có biên độ rất nhỏ so với các giá trị xung quanh khối (một chiều) DC.

Chủ đề:
Lưu

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

  1. 1 . Làm lại b ài tập 13.8 nh ưng lần n ày dùng chương trình 13.10 cho giải thu ật Lloyd. 2. So sánh thời gian tính toán khi dùng giải thuật Lloyd -Max và khi dùng giải thuật Lloyd. Từ biểu thức (13.52) và (13.58) chúng ta có thể phát triển một chương trình cho tình trạng méo tối thiểu: N 1 d k 1 d k 1  d p ( y)dy  y 2 p ( y )dy  rk2  (13.59) Dmin    dk   k k 0 13.6 Lượng tử hoá các hệ số của FCT Trong ph ần 13.4 chúng ta đã bắt đầu vấn đề của biến đổi cho mã hoá. Phương pháp chúng ta áp dụng là chia ảnh th ành các khối h ình vuông; mỗi khối có kích thư ớc 8  8 và 16  16. Biến đổi cosin nhanh cho mỗi khối này đã được rút ra. Chúng ta nhận thấy rằng hầu hết các hệ số này có biên độ rất nhỏ so với các giá trị xung quanh khối (một chiều) DC. Câu hỏi đặt ra lúc này là các hệ số nào chúng ta cần lưu giữ và bằng phương pháp nào chúng ta có thể lưu giữ tốt nhất các giá trị này? Câu trả lời cho vấn đề này có th ể tìm thấy trong phần lượng tử hoá mà chúng ta đã nghiên cứu ở trên. Chú ý là các hệ số của FCT xác định một dạng biến dạng. Cho ví dụ, một ảnh có 256  256 điểm và kích thước của các khối là 8  8 điểm, có tất cả 64 hệ số cho mỗi khối và 32  32 khối. Mỗi hệ số có 1024 giá trị khi chúng ta xem xét tất cả các khối, và tạo nên một biến dạng riêng. Đánh giá biến dạng cho h ệ số thứ j có th ể cho bởi d N J 1 k 1 j  (y  r (13.60) Dj  ) p j ( y)dy k, j k 0 d k j j = 0, 1, 2, ..., L - 1 . ở đây L là số các hệ số cho một khối và Nj số các mức lượng tử cho hệ số j. Tổng số các biến dạng sẽ là L 1 D   Dj (13.61) j 0 Làm theo các bước trong phần 13.5 chúng ta được d k 1 j yp j ( y)dy  dk j (13.62) rk , j  d k 1, j p j ( y ) dy  d kj 384
  2. rk , j  rk 1, j và (13.63) d k, j  2 Nếu chúng ta coi rằng bất kỳ hệ số nào có thể xác định bằng cùng một hàm kh ả năng xuất hiện độ sáng, thì thay thế giá trị các hệ số này (mà được biểu diễn trong biểu thức trên là y) b ằng y  j (13.64) j Chúng ta sẽ cho tất cả các hệ số với các phân bố xuất hiện giống nhau, với giá trị trung bình và chuẩn của độ lệch cho bởi  = 0 và  = 1. Kết quả sau khi tính toán cho ta các m ức chia và các m ức khôi phục cho tất cả hệ số “chia”. Điều này tất nhiên chỉ áp dụng với điều kiện là các hệ số có cùng một số các bit. Trước khi đưa ra các m ức lượng tử chúng ta có thể bỏ bớt một số hệ số. Nếu hệ số (0, 0) hay còn gọi là thành phần một chiều DC biểu diễn cho giá trị trung bình của độ sáng của một khối, chúng ta không thể bỏ điểm n ày đi đ ược. Các hệ số khác trong một khối (còn gọi là các hệ số xoay chiều AC) mang các thông tin về các chi tiết của ảnh. Có thể nhận thấy là các chi tiết có độ lệch lớn hơn độ lệch chuẩn thì mang nhiều tin tức hơn các chi tiết có độ lệch ít hơn độ lệch chuẩn. Vì vậy mà chúng ta bắt đầu lược bỏ các hệ số bắt đầu từ vùng có trải rộng ít nhất. Vậy bao nhiêu h ệ số sẽ được chúng ta giữ lại? Điều này ph ụ thuộc vào mức độ m à chúng ta muốn nén ảnh và phụ thuộc vào bao nhiêu các chi tiết bị mất trên ảnh mà chúng ta có th ể chấp nhận được. Dựa trên các giả thiết trên chúng ta có th ể phát triển một thuật toán cho nén ảnh và lượng tử hoá. Các bư ớc sau mô tả cho cả việc lượng tử hoá các hệ số FCT. 1 . Tính  và  cho tất cả các hệ số FCT. (Chú ý là độ lệch chuẩn và trung bình có thể tính trong một dải thông của ảnh dùng biểu thức sau cho : n xi2   xi  2 2  n(n  1) ở đây xi biểu diễn các giá trị cho một trong các hệ số).  được tính từ tổng của xi. 2 . Áp dụng các hệ số cho các chi tiết được giữ lại cụ thể là 0.25 , 0 .5. 3 . Giữ lại các hệ số đã nhân thêm phân số chia có sai lệch cao hơn sai lệch chuẩn. 4 . Định dạng một ma trận T có dạng 385
  3. nÕu hÖsè (i, j) kh«ng mÊt 1 Tij   c¸c tr­êng hîp cßn l¹i 0 5 . Chia khoảng cách các hệ số cij (cụ thể một cho các giá trị mà Tij = 1) trong tất cả các khối, ngoại trừ các giá trị một chiều cho mỗi khối, như sau: cij   ij (13.65)  ij 6 . Tính phân bố của các giá trị AC “chia” cho mảng FCT. 7 . Tính s của phân bố rút ra từ các bước trư ớc. 8 . Dùng lượng tử hoá Lloyd -Max mức N, và sửa lại các mức chia và khôi phục các mức theo: (13.66) di  di   s i = 0, 1, 2, ..., N - 1 . chú ý dN = -d0 Hàm phân bố Laplace cung cấp một xấp xỉ tốt hơn cho phân bố của các hệ số chia nh ư chúng ta th ấy ở phần d ưới đây. Sự lựa chọn của N cũng như các h ệ số chia của các hệ số phụ thuộc mức độ nén. 9 . Lượng tử các hệ số AC “ chia” dùng lượng tử hoá của b ước 8. 10. Chia mỗi giá trị một chiều với 2. Điều n ày đảm bảo rằng các giá trị một chiều không vượt quá 255 (một biểu diễn 8 bit). 11. Định dạng một phần đầu file chứa đầy đủ thông tin để khôi phục lại ảnh b ị nén. Phần này chứa thông tin về các mức chia và các mức một chiều bị cắt bớt và tập hợp các giá trị AC cho các hệ số giữ lại. 12. Áp dụng m à mã hoá Huffman cho file chứa các giá trị AC. Ma trận T thường gọi là ma trận khu vực, và cần cung cấp các hệ số cho chức năng khôi phục. Phần đầu file dùng bốn thông tin theo thứ tự sau. Chiều rộng của khối (ta coi khối là một h ình vuông): 1byte. Số các mức lượng tử: 1 byte. Chiều rộng của ảnh: 2 byte. Ma trận T: 1 bit cho một phần tử. 386
  4. Độ lệch chuẩn, trung b ình: 4 byte trong biểu diễn số thực  số các hệ số. Các mức khôi phục: 4 byte trong biểu diễn số thực/ mức. Chương trình 13.11 đ ưa ra lượng tử của các hệ số biến đổi cosin dùng các bước trên. Kết quả của chương trình là 3 file có cùng tên do người dùng xác định, nhưng có ph ần mở rộng khác nhau. 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ó 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 block DCT of an image . The input file should be the block DCT transform o the image. The program also designs a quantizer based on the statistics 387
  5. of the DCT coefficients. You should first run either the program for the Lloyd-Max or the one for Lloyd quantizer design if you haven't 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 on the block"); printf("\n DCT of an image. The 2-D FCT should be run on the"); printf("\n image prior to this program. If you haven't, just"); printf("\n enter NULL to the first prompt this will return you"); printf("\n to DOS.\n"); printf("\n You will need also to run the program MAXQ for"); printf("\n designing the Max quantizer. The program will"); printf("\n modify the decision and reconstruction levels of"); 388
  6. printf("\n the quantizer to fit the results to the statistics"); printf("\n of the DCT data.\n\n"); printf("Enter name of input file containing 2-D FCT results-->"); scanf("s",file_name); fptri=fopen(file_name,"rb"); if(fptri==NULL) { printf("\nNo such file exists.\n"); 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; i
  7. mu=(float *)malloc(Nt*sizeof(float)); xt=wherex(); yt=wherey(); gotoxy(70,25); textattr(WHITE+(GREEN
  8. free(sumd); free(sumdsq); rewind(fptri); /*Rewind input file.*/ xt=wherex(); yt=wherey(); gotoxy(70,25); textattr(WHITE+(BLACK
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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