Danh mục

Giáo trình xử lý ảnh y tế Tập 1a P15

Số trang: 10      Loại file: pdf      Dung lượng: 342.28 KB      Lượt xem: 11      Lượt tải: 0    
Hoai.2512

Hỗ trợ phí lưu trữ khi tải xuống: 1,000 VND Tải xuống file đầy đủ (10 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Để giải quyết vấn đề này chúng ta cần xử lý biên độ phổ một chút bằng hàm log. Hàm logarit sẽ sửa độ khuếch đại, và thay thế cho hiển thị phổ |H(u,v)| chúng ta hiển thị: D(u,v) = log10(1+|H(u,v)|)
Nội dung trích xuất từ tài liệu:
Giáo trình xử lý ảnh y tế Tập 1a P15 xr[j]=xr[j]+Tr; xi[j]=xi[j]+Ti; } if(iter!=0) { for(k=1; k=1 ; ip float IMAG; }; void transpose(FILE *fptr, int N, int n) /* Algorithm */ { int N1 , inc ; int iter,i,k; int k1,inc1; int k2,j,k3,k4,NS; struct COMPLEX *buff1,*buff2,tmp; long loc,NT; NS=sizeof(struct COMPLEX); NT=N*NS ; buff1=(struct COMPLEX *)malloc(NT); buff2=(struct COMPLEX *)malloc(NT); N1=N/2 ; inc=1 ; inc1=2 ; for(iter=0;iter perror(fseek failed); exit(1) ; } else fread(buff2,NT,1,fptr); k3=0 ; for(k2=0;k2 Bài tập 6.5 Cho các mảng 2-D 1 1 1 1 1 1     và X  1 1 1 Y  1 1 0 0 0 0 1 0 0     Phát triển một chương trình C thực hiện Phát triển chương trình C tính tích chập tuần hoàn giữa hai dãy trong miền 1. không gian. Phát triển chương trình C mà sẽ thêm các điểm 0 để mỗi chiều của mảng 2. có độ dài ít nhất là 3 + 3 – 1 = 5 và định dạng tích chập tuần hoàn qua DFT. Dùng chương trình 6.6 để đưa ra tích chập tuần hoàn qua 2-D FFT. 3. 6.6 Hiển thị FFT Nếu FFT của một ảnh trong tr ường hợp tổng quát là một mảng của các số phức đầy đủ, người ta thường biểu diễn biên độ và pha của tần số của ảnh. Hai yếu tố này biểu diễn tính chất của ảnh. Thông thường biên độ tần số được biểu diễn riêng lẻ và gọi là phổ biên độ. Mặc dù vậy, như chúng ta đã nghiên cứu, pha đóng vai trò quan trọng trong xử lý ảnh, và hợp không hợp lý khi chỉ biểu diễn phổ biên độ của ảnh. Để biểu diễn phổ dưới dạng ảnh, tất cả các việc chúng ta cần phải làm là chia biên độ của FFT thành các giá trị từ 0 đến 255 (cho ảnh 8 bit). Dù thế nào đi chăng nữa thì phổ của ảnh cũng bị suy giảm rất nhanh khi tần số tăng lên. Vì vậy mà vùng tần số cao sẽ trở nên lu mờ khi biểu diễn phổ dưới dạng ảnh. Để giải quyết vấn đề này chúng ta cần xử lý biên độ phổ một chút bằng hàm log. Hàm logarit sẽ sửa độ khuếch đại, và thay thế cho hiển thị phổ |H(u,v)| chúng ta hiển thị: D(u,v) = log10(1+|H(u,v)|) (6.67) Biểu thức này cho ta giá trị zero khi D(u,v) = 0 hay |H(u,v)| = 0 và như vậy D(u,v) luôn luôn có giá trị dương. Một chương trình dùng để chuyển đổi phổ thành dạng ảnh được cho ở chương trình 6.7. Hình 6.13 giới thiệu phổ của ảnh IKRAM.IMG trong hình 3.2a sau khi được chuyển đổi dùng biểu thức (6.67). Điểm tần số (0,0) nằm ở trung tâm màn hình. Chú ý phổ ảnh giảm xuống rất nhanh chóng khi tần số tăng lên. 129 Chương trình 6.7 DISP_FFT.C Chương trình dùng để đưa ra một file chứa phổ tần số trong dạng ảnh có thể hiển thị được. /************************ * Program developed by: * * M.A.Sid-Ahmed. * * ver.1.0 1992. * *************************/ /**************************************************** Program for calculating the magnitude of the 2-D FFT given a file containing the complex values of the FFT of an image. The result is placed in a form suitable for display in image form and stored in an external file. The mapping function D(u,v)=log10(1+ |(F(u,v)|) is used. ****************************************************** / #include #include #include #include #include #include void main() { int i,j,k,N,NB1,NB2; FILE *fptri, *fptro,*fptrt; double nsq; float max,min,xr,xi,scale; float *buffi,*bufft; char *buffo; char file_name[14]; 130 Hình 6.13 Phổ của IKRAM.IMG clrscr(); printf(Enter name of file containing FFT data ---> ); scanf(%s,file_name); fptri=fopen(file_name,rb); printf(Enter name of file for storing magnitude data -> ); scanf(%s,file_name); fptro=fopen(file_name,wb); fptrt=fopen(temp.img,wb+); nsq=(double)(filelength(fileno(fptri))/(2*sizeof(float ))); N=(int)(sprt(nsq)); max=0.0; min=1.0e9; NB1=(N1; buffi=(float *)malloc(NB1); 131 bufft=(float *)malloc(NB2); buffo(char *)malloc(N*sizeof(char)); for(i=0;i 4. Dùng thuật toán giảm lược đầu ra thiết kế một bộ lọc 2-D FIR thông thấp vói D0 = 0.3, kích thước 11  11. So sánh ví dụ 2.5 trong chương 2. 6.7 Bộ lọc hai chiều dùng FFT Nếu dùng tích chập để chuyển hàng loạt các phần tử từ miền không gian sang miền tần số ta nên áp dụng FFT. Phép biến đổi này yêu cầu 2. (N2/2). log2N phép nhân phức và 2. N2. log2N phép cộng phức để thu được 2-D FFT, N2 phép nhân phức trong miền tần số giữa FFT của điểm ảnh và các đáp ứng tần số cuả bộ lọc, 2 . (N2/2) . log2N phép nhân phức cho IFFT. Mặt khác, một bộ lọc 2 -D FIR có kích thước (2m + 1)  (2m + 1) đòi hỏi (2m + 1)2 N2 phép nhân để thu được ảnh trực tiếp trong miền không gian. Xem xét một ảnh có kích th ước 512  512 điểm. FFT yêu cầu: 4(4( N 2 / 2) log 2 N )  4 N 2  4  512 2  (2  9  1)  20 triệu phép nhân. Để đưa ra tính toán này chúng ta coi rằng một phép nhân phức thì bằng 4 phép nhân thông thường, và bộ lọc có pha zero. Phương pháp không gian áp dụng cho một bộ lọc có kích thước 7  7 yêu cầu 7  7  5122  13 triệu phép nhân. Nếu kích thước bộ lọc tăng lên thì phương pháp phân chia miền tần số có thể áp dụng. Một bộ lọc có kích thước 11  11 yêu cầu khoảng 30 triệu phép nhân sẽ chỉ cần khoảng 19 triệu phép nhân khi áp dụng ph ương pháp phân chia miền tần số. Hai phương pháp này sẽ có cùng một số phép nhân nếu 4N 2 (2log 2 N  1)  (2m  1) 2 N 2 Cho một ảnh có kích thước 512  512 (2m + 1)  9, dễ chứng minh là nếu kích thước bộ lọc nhỏ hơn 9 thì ta có thể phương pháp phân chia không gian. Tuy nhiên, cần chú ý phương pháp phân chi ...

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