Danh mục

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

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

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

Thông tin tài liệu:

Chúng ta sẽ bắt đầu bằng xem xét định lý lấy mẫu trong trường hợp 1-D.Sau đây chúng ta sẽ nghiên cứu trường hợp các tín hiệu 2-D. Nếu một hàm x(t) không chứa tần số cao hơn W, có thể xác địnhmột cách hoàn toàn bằng một toạ độ mà dãy các điểm chia cách nhau 1/(2W).Chu kỳ lấy mẫu được cho bởi
Nội dung trích xuất từ tài liệu:
Giáo trình xử lý ảnh y tế Tập 2 P3 H ình 7.7 CAMEL.IMG và ảnh đ ã đ ược phóng to.N2=N/* Taking 2-D FFT. */FFT2D(fptri,fptro,wr,wi,L,N,m,-1);clrscr() ;printf( Adding zeros to FFT of image. );/* Adding zeros to double the size of the FFT.*/ N4=N2 printf(Last stage in forming enlargedimage.); fptri=fopen(IFFT2.img,rb); fptro=fopen(file_name,wb); buffr=(unsigned char*)malloc(N2*sizeof(char)); max=0; min=1.0e7; for(i=0;ita có thể thu đư ợc cùng kết quả nếu ta áp dụng liên tiếp hai phép nội suyvuông. Giải thuật chuyển đổi những sao chép cơ b ản theo bộ lọc thông thấpsang ảnh để có được ảnh trơn hơn. Kết hợp thực hiện ba lần liên tục trên ảnhvới toán tử nội suy vuông tương đương với áp dụng toán tử nội suy Bell. Toántử nội suy bậc 3 có thể thu đư ợc nhờ kết hợp phép nội suy vuông và Bell hoặckết hợp toán tử nội suy vuông bốn lần. Sử dụng cùng khái niệm đó, chúng tacó thể dễ d àng có được nội suy cao h ơn. Hình vuông: 11 1 1 Tam giác: 121 242 121 Bell 13 31 39 93 39 93 13 31 Cubic B-Spline 1 4 6 4 1 4 16 24 16 4 6 24 36 24 6 4 16 24 16 4 1 4641 Hình 7.8 Các phép nội suy thông thường. Những khái niệm trên có th ể được thực hiện trong phần mềm tương tự vớiviệc thực hiện lọc FIR. Bộ đệm chuyển đổi ảnh kích thước N  (2  độ rộngcủa ảnh) được tận dụng, ở đó N = 2 cho toán tử nội suy vuông, N = 3 cho toántử nội suy tam giác, v.v... Một hàng của ảnh được chuyển thành hàng cuốicùng của bộ đệm chuyển đổi ảnh và lưu trữ tại các vị trí khác với các vị trí ởgiữa đặt bằng không. Tương quan của phép nội suy với bộ đệm truyền tới ảnhvà dịch chuyển hàng như trong phương pháp trong bộ lọc FIR, một hàng củacác giá trị 0 đ ược chuyển đổi thành hàng cuối cùng của bộ đệm chuyển đổiảnh. Những bước n ày được lặp đi lặp lại cho những phần còn lại của ảnh, bằngcách lựa chọn sự chuyển đổi một h àng từ ảnh theo một hàng của các giá trị 0.Thủ tục thực hiện thuật toán n ày được cho trong chương trình 7.3. Chương trình 7.3 “ENLARGE.C”./* This program doubles the dimensions of animage by interpolation. */ 144#include #include #include #include #include #include #include #include int SQUARE[2][2]={ { 1, 1 }, { 1, 1 }};int TRIANGLE[3][3]= { { 1, 2, 1 }, { 2, 4, 2 }, { 1, 2, 1 } };int BELL[4][4]={ { 1, 3, 3, 1 }, { 3, 9, 9, 3}, { 3, 9, 9, 3}, { 1, 3, 3, 1} } ;int CUBIC_B_SPLINE[5][5]={ { 1, 4, 6, 4, 1 }, { 4, 16, 24, 16, 4 }, { 6, 24, 36, 24, 6 }, { 4, 16, 24, 16, 4 } };void main() {char file_name[14],ch;FILE *fptri,*fptro,*fptrt;double nsq;int image_length,image_width, N, N1,image_length2,image_width2,i,j,ind,xt,yt;unsigned int **a,n1,n2,k1,k2,sum,max,min,*bufft;unsigned char **w,*buffi,*buffo,*temp;float scale;clrscr();printf(Enter file name for input image -->);scanf(%s,file_name);fptri=fopen(file_name,rb);if(fptri==NULL) { printf(%s does not exist.,file_name); 145 printf( Press any key to exit. ); getch() ; exit(1); }nsq=filelength(fileno(fptri));printf(Is this a square image ?);printf( i.e. Is image length =image width (y orno) ? -->);while(((ch=tolower(getch()))!=y)&&(ch!=n));putch(ch); switch(ch) { case y : image_length=image_width=sqrt(nsq); printf( Image size = %d x %d,image_length, image_width); break; case n: printf( Enter image_width-->); scanf(%d,&image_width); image_length=nsq/image_width; printf(Image length is %d, image_length); break;again :gotoxy(1,5);printf();gotoxy(1,5);printf(Enter file name for enlarged image-->);scanf(%s,file_name);if((stricmp(temp.img,file_name))==0) {printf(This is a reserved file name. Use someother name.);goto again; }gotoxy(1,6);printf ( );ind=access(file_name,0);while(!ind) 146 { gotoxy(1,6); printf(File exists. Wish to overwrite? (y or n)-->); while(((ch=tolower(getch()))!=y)&&(ch!=n)); putch(ch); switch(ch) { case y ...

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