Giáo trình xử lý ảnh y tế Tập 1b P9 pdf

8 266 1
Giáo trình xử lý ảnh y tế Tập 1b P9 pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

53 )( 1 )()( sTr rs ds dr rpsp          (4.17) Chúng ta giả thiết rằng, tại một thời điểm, ảnh gốc và ảnh qua ánh xạ là các hàm liên tục với hai biến không gian độc lập x và y. Bây giờ hãy xem đến sự biến đổi   r r dprTs 0 )()(  (4.18) Trong đó vế bên phải được biết đến như hàm phân bố tích luỹ (cumulative distribution function - CDF). Từ công thức (4.18) chúng ta có thể viết: )(rp dr ds r  (4.19) Thay thế công thức (4.19) vào (4.17) chúng ta có 0.1 )( 1 )()(  rp rpsp r rs (4.20) Vì vậy, phép biến đổi cho bởi công thức (4.18) cho ảnh mức xám có phổ đồng đều. Biến đổi trên có thể được viết dưới dạng tổng quát hoá như sau:    k j k jns 0 )( (4.21) Hoặc, chúng ta muốn ánh xạ ảnh mức xám nằm giữa 0 và 255, chúng ta có thể thay đổi k s như sau: 255 0255 0 ss ss s k k    (4.22) Chú ý rằng vì công thức (4.21) là một xấp xỉ của công thức (4.18) bằng cách cho rằng ảnh ánh xạ có thể có lược đồ mức xám không thực sự đồng đều. Một nhân tố khác cũng không được quan tâm trong quá trình biến đổi, đó là với một số ảnh mà các mức xám không phủ kýn các miền thì CDF sẽ giữ lại hằng số ở những miền không được phủ kýn đó. Những nhân tố này sẽ cho kết quả trong ảnh ánh xạ mà ở đó lược đồ mức xám là xấp xỉ gần nhất với lược đồ mức xám đồng đều được rút ra từ ảnh gốc. Chương trình 4.1 cho dưới đây dùng cho việc san bằng lược đồ mức xám. 54 Chương trình 4.1 "UNI_HIST.C". /* PROGRAM 4.1 “UNI_HIST.C”. Histogram equalization. */ /* Histogram equalization. */ #define MAX 16384 #include <stdio.h> #include <conio.h> #include <io.h> #include <math.h> #include <ctype.h> #include <stdlib.h> void main() { int image_length,image_width,i,j,ch,true_length; unsigned long int histo[256],s[256]; char file_name[14]; unsigned char buff[MAX]; int k,n,ind; double nsq; float range; FILE *fptr,*fptr2; clrscr(); printf("Enter file name of image >"); scanf("%s",file_name); fptr=fopen(file_name,"rb"); if(fptr==NULL) { printf("%s does not exist.",file_name); exit(1); } printf("Enter file name for storing mapped image >"); scanf("%s",file_name); gotoxy(1,3); printf(" "); ind=access(file_name,0); while(!ind) { 55 gotoxy(1,3); printf("File exists. Wish to overwrite? (y or n) >"); while(((ch=tolower(getch()))!='y')&&(ch!='n')); putch(ch); switch(ch) { case 'y': ind=1; break; case 'n': gotoxy(1,3); printf( " "); gotoxy(1,2); printf(" "); gotoxy(1,2); printf("Enter file name >"); scanf("%s",file_name); ind=access(file_name,0); } } fptr2=fopen(file_name,"wb"); nsq=(double)filelength(fileno(fptr)); printf("\nIs this a square image ? (y or n) "); while(((ch=tolower(getch()))!='y')&&(ch!='n')); putch(ch); switch(ch) { case 'y': image_length=image_width=sqrt(nsq); break; case 'n': printf("Enter image width > "); scanf("%d",&image_width); image_length=(int)(nsq/image_width); } printf("\n image size= %d x %d",image_length,image_width); true_length=0.95*image_length; /* Generate Histogram.*/ for(i=0;i<256;i++) histo[i]=0; 56 for(i=0;j<true_length;i++) for(j=0;j<image_width;j++) histo[getc(fptr)]++; /* Generate CDF. */ s[0]=histo[0]; for(i=1;i<256;i++) s[i]=s[i-1]+histo[i]; /* scaling*/ range=(float)(s[255]-s[0]); for(i=1; i<256; i++) s[i]=(int)((float)(s[i]-s[0]))*255.0/range; /* Mapping into a uniform histogram.*/ rewind(fptr); k=0 ; for(i=0; i<image_length; i++) for(j=0; j<image_width; j++) { ch=s[getc(fptr)]; buff[k]=(unsigned char)ch; k++; if((k==MAX)||(ch==EOF)) { for(n=0;n<k;n++) putc((int)buff[n],fptr2); k=0; } } fclose(fptr); fclose(fptr2); printf("\n\nDONE."); } Để kiểm tra việc san bằng lược đồ mức xám chúng ta xem xét ảnh trên hình 4.12a. Đây là ảnh của một người tương phản với nền sáng. Khi chụp ảnh này đã không dùng đèn để giảm độ sáng của nền. ảnh sau khi san bằng mức xám được cho trên hình 4.12b. Dễ dàng nhận thấy được sự thay đổi so với ảnh gốc. ảnh cung cấp cho bạn thử nghiệm được cung cấp sẵn trên đĩa kèm theo với tên "ISLAM.IMG". 57 Hình 4.12 (a) Ảnh gốc dùng cho san bằng lược đồ mức xám. Hình 4.12 (b) Ảnh sau khi san bằng lược đồ mức xám. 4.5.3 Thay đổi lược đồ mức xám Kỹ thuật san bằng lược đồ mức xám đưa ra một phương pháp trong đó có thể nâng cao chất lượng ảnh qua việc làm bình đẳng tầm quan trọng giữa các mức xám. Tuy nhiên, có thể trong một vài ứng dụng người ta cần nâng cao mức xám hay một khoảng mức xám nào đó. Vì vậy, cần phải ánh xạ ảnh mức 58 xám để lược đồ mức xám của nó tuân theo một phân phối đặc biệt. Chúng ta thực hiện điều này bằng cách nào, hãy quay lại một chút với ảnh mức xám liên tục, để )(rp r và )(zp z là hàm mật độ xác xuất tương ứng của ảnh gốc và ảnh ánh xạ riêng biệt. Để chuyển đổi ảnh gốc thành ảnh có lược đồ mức xám các mức xám đồng đều chúng ta dùng hàm ánh xạ CDF, ví dụ:   r r dprTs 0 )()(  (4.23) Nếu ảnh ánh xạ đã có sẵn, thì các mức xám của nó có thể được ánh xạ sang phổ lược đồ mức xám đồng đều qua CDF như sau:   z z dpzGv 0 )()(  (4.24) Bởi vì ảnh ánh xạ vừa nhận được từ ảnh gốc, thì sau đó nó sẽ ánh xạ vào cùng ảnh có lược đồ mức xám được làm bằng nhau (đồng bộ). Đó là: )()( rTzG  (4.25) hay    z r rz dpdp 0 0 )()(  (4.26) Trong đó r và z là hai biến tương ứng thể hiện mức xám của ảnh gốc và ảnh ánh xạ. Cái ta cần là thu được z như là một hàm trực tiếp của r, nghĩa là: )())(( 1 rFrTGz   (4.27) Để có được giải pháp theo công thức giải tích (4.26) cho trường hợp chung có thể là khó khăn hoặc không thể làm được. Tuy nhiên, giải pháp đồ thị là rất có thể, và hình 4.13 minh hoạ thủ tục cho giải pháp này. Với một mức xám được chọn r 1 thu được T(r 1 ). Chiếu T(r 1 ) lên G(z) thu được mức xám ánh xạ z 1 . Bởi vì trong thực tế chúng ta thường xử lý ảnh rời rạc chứ không phải ảnh liên tục, nên CDF sẽ được viết lại như sau:    r i o inrT 1 )()( (4.28) và    z i m inzG 0 )()( (4.29) ở đây n 0 (i) và n m (i) là các mảng mà phần tử thứ i của nó chứa tổng số mức xám, có giá trị i trong ảnh gốc và ảnh ánh xạ. Sự xấp xỉ nảy sinh trong trường 59 hợp rời rạc, dẫn đến khó có thể đạt được các giá trị của r và z để )(rT đúng bằng )(zG . Tuy nhiên có thể tìm một giá trị của z sao cho với bất kỳ r biểu thức sau đây được thoả mãn: )1()()1(     zGrTzG (4.30) (xem hình 4.14.) Hình 4.13 Biểu diễn đồ thị của công thức (4.26). Hình 4.14 Biểu diễn đồ thị của trường hợp mẫu. Do vậy, dựa trên các vấn đề thảo luận ở trên và hình 4.14 chúng ta có thể thực hiện từng bước theo thủ tục sau để xác định ánh xạ giữa r và z. 1. Quy định lược đồ mức xám cho ảnh ánh xạ. 2. Tính CDF )(rT và )(zG riêng rẽ sử dụng công thức (4.28) và (4.29) 3. Cho r = 0 đến 255 ( bước nhảy bằng 1) thực hiện: a. Tìm z sao cho )1()()(    zGrTzG b. Lưu giữ trong mảng F, tại vị trí r, giá trị bằng của z; nghĩa là F(r) = z. Thủ tục trên mang lại mảng ánh xạ ))(()( 1 rTGrFz   G(z ) r 1 r z 1 z T(r) G(z) G(z 1 ) r 1 r z 1 z T(r) T(r 1 ) 60 Kết quả này có thể được dùng để chuyển đổi ảnh gốc sang một ảnh có mức xám xấp xỉ với mức xám đã quy định. Với thủ tục trên để thực hiện chúng ta cần chia khoảng )(rT và )(zG vì thế chúng cung cấp cùng khoảng động của các mức xám. Chú ý rằng )(rT và )(zG là những hàm ánh xạ chúng ánh xạ ảnh gốc và ảnh chuyển đổi thành ảnh san bằng mức xám. Vì thế, công thức (4.28) và (4.29) sẽ được viết lại như sau: 255 )0()255( )0()( )( 0 TT Tin rT r i o      (4.31) 255 )0()255( )0()( )( 0 GG Gin zG z i m      (4.32) Việc quy định lược đồ mức xám. Có một kỹ thuật chuẩn để sinh ra lược đồ mức xám cho ảnh chiếu. Những kỹ thuật này được mô tả sau đây. Phân phối Gauss. Phân phối cho rằng 22 2/)( )(    z ezh (4.33) Trong đó  = kỳ vọng toán học hay trị trung bình.  = sai phương. Chú ý rằng h(z) giảm khoảng 90 phần trăm giá trị tối đa của nó tại 073.1/  z Do đó,  biểu hiện bề rộng của phân phối. Tham số  và  có thể được điều chỉnh cho đến khi đạt được kết quả mong muốn trên ảnh ra. Cần chú ý rằng thực hiện phép chiếu các lược đồ mức xám khác nhau phụ thuộc vào ảnh, bởi vậy cần phải tăng cường ảnh. Tuyến tính từng đoạn (Piecewise linear). Một cách tiếp cận xen kẽ linh động hơn phương pháp Gaussian là sử dụng các đoạn thẳng để biểu diễn phân phối mong muốn. Hình 4.15 đưa ra phương pháp như vậy. Các tham số m HL ,,  và h có thể được thay đổi đến tận khi thu được ảnh mong muốn. Hình 4.15 có thể được trình bày như sau:  L  H 0 m 255 z h k j 1 p(z) . n y bằng cách nào, h y quay lại một chút với ảnh mức xám liên tục, để )(rp r và )(zp z là hàm mật độ xác xuất tương ứng của ảnh gốc và ảnh ánh xạ riêng biệt. Để chuyển đổi ảnh gốc thành ảnh. lược đồ mức xám chúng ta xem xét ảnh trên hình 4.12a. Đ y là ảnh của một người tương phản với nền sáng. Khi chụp ảnh n y đã không dùng đèn để giảm độ sáng của nền. ảnh sau khi san bằng mức xám. trong thực tế chúng ta thường xử lý ảnh rời rạc chứ không phải ảnh liên tục, nên CDF sẽ được viết lại như sau:    r i o inrT 1 )()( (4.28) và    z i m inzG 0 )()( (4.29) ở đ y n 0 (i)

Ngày đăng: 10/07/2014, 22:20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan