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 P16

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

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

Nếu bạn muốn dời dấ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ắp nú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ạn chọ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 ấn ESC, con trỏ sẽ xuất hiện trên màn hình VGA.

Chủ đề:
Lưu

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

  1. printf("\n %d derivative=%f error=%f ", k,der,delta); if(fabs(delta)>=500.0) { printf("\n A numerical problem was encountered."); printf("\n Restart problem with a different choice."); exit(1); } r[0]-delta/der; } gotoxy(70,25); textattr(WHITE+(BLACK
  2. } 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-Raphson's method for root finding. */ while(fabs(delta)>=EPS) { i++; if(i>=1000) { printf("\n no convergence.\n"); return di; } area1=Romberg(di-1,di,f1); area2=Romberg(di-1,di,f2); 376
  3. ff=area1/area2; fun=(ri_1)-ff; if(fabs(area2)
  4. 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;i
  5. phá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ủa hàm một biến đ ã biết được phân tán. Vector lượng tử hoá là một vector của nhiề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úc trướ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 ương trì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
  6. 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 for quantizer 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
  7. printf("\n 3. Laplace. -->(1,2 or 3): "); while(((ch=getch())!='1')&&(ch!='2')&&(ch!='3')); putch(ch); printf("\n Do you wish to start from a previous design? (y or n)-->"); while(((ch1=getch())!='y')&&(ch1!='n')); putch(ch1); ind=0; switch(ch1) { case 'y': printf("\n Enter name Of file containing quantizer data--Y"); scanf("%s",file_name); fptr=fopen(file_name,"r"); if(fptr==NULL) { printf("\n No such file."); ind=1; } if(ind!=1) { for(i=0;i
  8. printf("iter=%d",j); D2=0.0; for(i=0;i
  9. scanf("%s",file_name); fptr=fopen(file_name,"W"); for(i=0; i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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