Danh mục

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

Số trang: 9      Loại file: pdf      Dung lượng: 155.03 KB      Lượt xem: 10      Lượt tải: 0    
10.10.2023

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

Thông tin tài liệu:

Nếu bạn muốn dờidấu thập đi chỗ khác trong trường hợp các điểm nhập vào lớn hơn một, thì nhắpnút trái chuột nhiều lần. Hành động này sẽ làm dời đi rất nhiều điểm tuỳ theo bạnchọn (bắt đầu từ điểm cuối cùng) từ biểu đồ màu và lưu trong mảng. Khi bạn ấnESC, con trỏ sẽ xuất hiện trên màn hình VGA.
Nội dung trích xuất từ tài liệu:
Giáo trình xử lý ảnh y tế Tập 3 P16 printf( %d derivative=%f error=%f ,k,der,delta); if(fabs(delta)>=500.0) { printf( A numerical problem wasencountered.); printf( Restart problem with a differentchoice.); exit(1); } r[0]-delta/der; } gotoxy(70,25); textattr(WHITE+(BLACK } double p(double x) { double prob; switch(ch) { case 1: prob=exp(-x*x*0.5); break; case 2: prob=1.0; break; case 3: prob=exp(-1.4142136*fabs(x)); break; } return prob; }#define EPS 1.0e-6/*----------------------------------Calculating the next decision level,given values for d[i-11 and r[i-1].--------------------------------- */double decision_level(double di_1, double ri_1) { double delta,di,fun,dfun,ff,area1,area2; int i; if(fabs(di_1)>10.0) delta=2.0; else delta=0.1; di=ri_1+delta; i=0; /* Using Newton-Raphsons method for root finding.*/while(fabs(delta)>=EPS) { i++; if(i>=1000) { printf( no convergence. ); return di; } area1=Romberg(di-1,di,f1); area2=Romberg(di-1,di,f2); 376 ff=area1/area2; fun=(ri_1)-ff; if(fabs(area2) double T[10][10],h,x,Area; int N,k,kk,i,j; N=9; k=1 ; h=di- di_1; T[0][0]=h*((*f)(di_1)+(*f)(di))/2.0; for(i=1;ipháp này có nhiều ưu điểm hơn phương pháp II (giải thuật Lloyd -Max), vì nódễ dàng cho tính toán và các vector lượng tử hoá có thể mở rộng. Chú ý là vấnđề mà chúng ta quan tâm ở đây là kho ảng cách lượng tử hoá, lượng tử hoá củahàm một biến đ ã biết được phân tán. Vector lượng tử hoá là một vector củanhiều biến m à với các biến này ta đ ã biết được phân tán. Thuật toán Lloyd theo các bước sau: 1 . Rút ra ước lượng cho phạm vi của các biến di {i = 0, 1, 2, ..., N} (Một ước lượng có thể rút ra bằng cách dùng các giá trị từ lượng tử hoáđồng đều ho ặc từ các mức lượng tử trước m à ta cần một kết quả tốt hơn). 2 . Đặt một biến D1= 0. D1 dùng để lưu lại tình trạng không chính xác lúctrước. 3 . Tính d i1 yp ( y )dy  di r i d i 1 p ( y)dy  di i = 0, 1, ..., N - 1 . 4 . Tính ri  ri 1 di  2 i = 0 , 1, ..., N - 1 5 . Tính tình trạng không chính xác N 1d k 1   ( y  rk ) 2 p( y )dy D2  k 0 d k Có thể dễ dàng mở rộng biểu thức trạng thái không chính xác theo N 1 d k 1 d k 1 d k 1  d p ( y )dy  y 2 p ( y)  2rk  yp ( y )dy  rk2  (13.58) D   dk dk   k k 0 6 . Nếu D2  D1  D1 thì một giải pháp đã đ ược tìm ra. Lưu lại kết quả và thoát khỏi ch ươngtrình. 7 . Đặt D1 = D2 8 . Quay lại b ước 3. Một chương trình C cho giải thuật trên được đề cập đến ở dưới đây. 379 Chương trình 13.10 “LLOYDQ.C” Thuật toán Lloyd cho việc thiết kếcác mức lượng tử./*Program13.10 LLOYDO.C.Lloyd algorithm forquantizer design.*//* Program for designing the Lloyd-quantizer for a Gauss, uniform or Laplace distribution.*/#include #include #include #include #include double decision_level(double, double);double f1(double);double f2(double);double f3(double);double p(double);double Romberg(double, double, double(*)(double));char ch;void main( ) { double *r,*d,step,sum,I1,I2,I3,D1,D2; int i,j,m,N,xt,yt,niter,ind; char file_name[16],ch1; FILE *fptr; clrscr( ) ; printf(Enter number of bits--->); scanf(%d,&m); printf(Enter number of iterations-->); scanf(%d,&niter); N=1 printf( 3. Laplace. -->(1,2 or 3): ); while(((ch=getch())!=1)&&(ch!=2)&&(ch!=3)); putch(ch); printf( Do you wish to start from a previousdesign? (y or n)-->); while(((ch1=get ...

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