📄 ccctrs.c
字号:
if (check[(k+q)%H]>0) /* is local max */ { flag = 1; if (slope[(k+q)%H]>now) { now = slope[(k+q)%H]; k1 = (k+q)%H; /* next ray */ } } } if (flag>0) { flag = 0; grx = (ii[k0]*ii[k1]+jj[k0]*jj[k1])/(d[k0]*d[k1]); grx = ABS(1+grx)/2; if (grx>0.0001) grx = sqrt((double) grx);/*if (mk==109)*//* if (i==245) if (j==99) *//* printf("k0 %d k1=%d grx = %f grmx = %f\n",k0,k1,grx,grmn);*/ if (grx<=grmn) { grmn=grx; t1=k0; t2=k1; } flag = 0; k0 = k1; } } } k0=t1; k1=t2;/*if (mk==109)*//* if (i==245) if (j==99) */ /* printf("at (%d %d) k0=%d,k1=%d\n",i,j,k0,k1); */ v0 = v[i][j]; m = (int) (i + (ii[k0])*v0/d[k0]); n = (int) (j + (jj[k0])*v0/d[k0]); k = (int) (v0/d[k0]+0.5); k = MIN(k,v0-1);/*if (mk==109)*//*if (i==245) if (j==99) */ /*{ printf("ii (%d %d), v0=%f d=%f\n",ii[k0],jj[k0],v0,d[k0]);printf("m,n = (%d %d),nbhd=%d\n",m,n,k);}*/ zm = xdim+ydim; zm *= zm; flag = 0; i2 = -1; j2 = -1; for (p=m-k;p<m+k+1;p++) for (q=n-k;q<n+k+1;q++) if (bdry[p][q]>0) { z = (p-i)*(p-i)+(q-j)*(q-j); if (z<zm) { zm = z; i2 = p; j2 = q; flag = 1; } } /*if (mk==109)*//*if (i==245) if (j==99) */ /* printf("flag=%d, bdrypt (%d %d)\n",flag,i2,j2); */ if (flag>0) { k0 = k1; i1 = i2; j1 = j2; m = (int) (i + (ii[k0])*v0/d[k0]); n = (int) (j + (jj[k0])*v0/d[k0]); k = (int) (v0/d[k0]+0.5); k = MIN(k,v0-1);/*if (mk==109)*//*if (i==245) if (j==99) *//*{ printf("ii (%d %d), v0=%f d=%f\n",ii[k0],jj[k0],v0,d[k0]);printf("m,n = (%d %d),nbhd=%d\n",m,n,k); } */ zm = xdim+ydim; zm *= zm; flag = 0; for (p=m-k;p<m+k+1;p++) for (q=n-k;q<n+k+1;q++) if (bdry[p][q]>0) { z = (p-i)*(p-i)+(q-j)*(q-j); if (z<zm) { zm = z; i2 = p; j2 = q; flag = 1; } }/*if (mk==109)*//*if (i==245) if (j==99) *//* printf("flag=%d, bdrypt (%d %d)\n",flag,i2,j2);*/ } } if (h==1) { int bdry_i[200],bdry_j[200]; int count; float a1,b1,d,dist[200]; count=0; flag = 0; d=1000; p=pic[i][j]; for (m=i-5;m<i+6;m++) for (n=j-5;n<j+6;n++) if (bdry[m][n]>0) if (pic[m][n]==p) { bdry_i[count]=m; bdry_j[count]=n; z=(i-m)*(i-m)+(j-n)*(j-n); z=sqrt((double) z); dist[count]=z; if (z<d) {d=z; k=count;} count++;/*if (mk==109)*//* if (i==171) if (j==300) */ /* printf("%d %d %f\n",m,n,z);*/ } zm=1; i1=bdry_i[k]; j1=bdry_j[k]; a1=(i1-i)/dist[k]; b1=(j1-j)/dist[k]; if (count>1) for (p=0;p<count;p++) { m=bdry_i[p]; n=bdry_j[p]; z = (a1*(m-i)+b1*(n-j))/dist[p]; if (z<zm) {i2=m; j2=n; zm=z;} } if (zm<1) flag=1;/*if (mk==109)*//* if (i==171) if (j==300) *//* printf(" flag=%d bdrypts (%d %d) (%d %d) \n",flag,i1,j1,i2,j2); */ } if (flag>0) connect(i1,j1,i2,j2,pic[i][j]); for (m=i-1;m<i+2;m++) for (n=j-1;n<j+2;n++) if ((m!=i)||(n!=j)) if (sk[m][n]==1) if (mark[0][m][n]==mk) endpts[m][n]=0; }} void output_results() { int i,j; for (i=0;i<ydim;i++) for (j=0;j<xdim;j++) { if (bdry[i][j]>0) outsk[i][j]=0; /* else if (ctrs[i][j]==1) outsk[i][j]=0; */ else if (ctrs[i][j]==2) outsk[i][j]=0; /* else if (sk[i][j]==2) outsk[i][j]=224; else if (sk[i][j]==1) outsk[i][j]=128; */ else outsk[i][j]=255; } strcpy(outname, inname); strcat(outname,"hprb"); sprintf(buf1,"%d", upper_threshold); sprintf(buf2,"%d",NN); strcat(outname,buf1); strcat(outname,"_"); strcat(outname,buf2); printf("Writing %s\n",outname); if ((outfile = fopen(outname,"w+")) == NULL) { printf("Cannot create %s\n",outname); exit(1); } fwrite(outsk,sizeof(unsigned char),xdim*ydim,outfile); fclose(outfile); /* for (i=0;i<ydim;i++) for (j=0;j<xdim;j++) { if (bdry[i][j]>0) outsk[i][j]=0; else if (sk[i][j]==1) outsk[i][j]=128; else outsk[i][j]=255; } strcpy(outname, inname); strcat(outname,"rbn_axes"); sprintf(buf1,"%d",upper_threshold); sprintf(buf2,"%d",middle_threshold); sprintf(buf,"%d",N); strcat(outname,buf); strcat(outname,"-"); strcat(outname,buf1); strcat(outname,"-"); strcat(outname,buf2); printf("Writing %s\n",outname); if ((outfile = fopen(outname,"w+")) == NULL) { printf("Cannot create %s\n",outname); exit(1); } fwrite(outsk,sizeof(unsigned char),xdim*ydim,outfile); fclose(outfile); *//* for (i=0;i<ydim;i++) for (j=0;j<xdim;j++) { if (bdry[i][j]>0) outsgmt[i][j]=0; else if (sgmt[i][j]>0) outsgmt[i][j]=128; else outsgmt[i][j]=255; } strcpy(outname, inname); strcat(outname,"prtrns"); sprintf(buf1,"%d",upper_threshold); sprintf(buf2,"%d",middle_threshold); sprintf(buf,"%d",N); strcat(outname,buf); strcat(outname,"-"); strcat(outname,buf1); strcat(outname,"-"); strcat(outname,buf2); printf("Writing %s\n",outname); if ((outfile = fopen(outname,"w+")) == NULL) { printf("Cannot create %s\n",outname); exit(1); } fwrite(outsgmt,sizeof(unsigned char),xdim*ydim,outfile); fclose(outfile); */ } void run(void){ int i,j,m,n,count=48; char str[100][128]; char sstr[100][128]; time_t systime; SIOUXSettings.asktosaveonclose = 0; /* SIOUXSettings.showstatusline = 1; */ systime = time(NULL); puts(ctime(&systime));/* strcpy(str[0],"::CorpusCallosum:ccSchzSchz:1030_2_128.buchar"); strcpy(str[1],"::CorpusCallosum:ccSchzSchz:1033_2_128.buchar"); strcpy(str[2],"::CorpusCallosum:ccSchzSchz:1035_2_128.buchar"); strcpy(str[3],"::CorpusCallosum:ccSchzSchz:1036_2_128.buchar"); strcpy(str[4],"::CorpusCallosum:ccSchzSchz:1037_2_128.buchar"); strcpy(str[5],"::CorpusCallosum:ccSchzSchz:1038_4_128.buchar"); strcpy(str[6],"::CorpusCallosum:ccSchzSchz:468_6_128.buchar"); strcpy(str[7],"::CorpusCallosum:ccSchzSchz:474_4_128.buchar"); strcpy(str[8],"::CorpusCallosum:ccSchzSchz:476_6_128.buchar"); strcpy(str[9],"::CorpusCallosum:ccSchzSchz:479_6_128.buchar"); strcpy(str[10],"::CorpusCallosum:ccSchzSchz:491_4_128.buchar"); strcpy(str[11],"::CorpusCallosum:ccSchzSchz:510_4_128.buchar"); strcpy(str[12],"::CorpusCallosum:ccSchzSchz:511_4_128.buchar"); strcpy(str[13],"::CorpusCallosum:ccSchzSchz:519_4_128.buchar"); strcpy(str[14],"::CorpusCallosum:ccSchzSchz:578_4_128.buchar"); strcpy(str[15],"::CorpusCallosum:ccSchzSchz:579_4_128.buchar"); strcpy(str[16],"::CorpusCallosum:ccSchzSchz:580_4_128.buchar"); strcpy(str[17],"::CorpusCallosum:ccSchzSchz:597_4_128.buchar"); strcpy(str[18],"::CorpusCallosum:ccSchzSchz:614_4_128.buchar"); strcpy(str[19],"::CorpusCallosum:ccSchzSchz:615_4_128.buchar"); strcpy(str[20],"::CorpusCallosum:ccSchzSchz:631_4_128.buchar"); strcpy(str[21],"::CorpusCallosum:ccSchzSchz:635_5_128.buchar"); strcpy(str[22],"::CorpusCallosum:ccSchzSchz:647_4_128.buchar"); strcpy(str[23],"::CorpusCallosum:ccSchzSchz:672_4_128.buchar"); strcpy(str[24],"::CorpusCallosum:ccSchzSchz:677_4_128.buchar"); strcpy(str[25],"::CorpusCallosum:ccSchzSchz:686_4_128.buchar"); strcpy(str[26],"::CorpusCallosum:ccSchzSchz:689_4_128.buchar"); strcpy(str[27],"::CorpusCallosum:ccSchzSchz:690_4_128.buchar"); strcpy(str[28],"::CorpusCallosum:ccSchzSchz:772_4_128.buchar"); strcpy(str[29],"::CorpusCallosum:ccSchzSchz:789_4_128.buchar"); strcpy(str[30],"::CorpusCallosum:ccSchzSchz:790_4_128.buchar"); strcpy(str[31],"::CorpusCallosum:ccSchzSchz:791_4_128.buchar"); strcpy(str[32],"::CorpusCallosum:ccSchzSchz:792_4_128.buchar"); strcpy(str[33],"::CorpusCallosum:ccSchzSchz:793_4_128.buchar"); strcpy(str[34],"::CorpusCallosum:ccSchzSchz:853_4_128.buchar"); strcpy(sstr[0],"::CorpusCallosum:ccSchzSchz:1030"); strcpy(sstr[1],"::CorpusCallosum:ccSchzSchz:1033"); strcpy(sstr[2],"::CorpusCallosum:ccSchzSchz:1035"); strcpy(sstr[3],"::CorpusCallosum:ccSchzSchz:1036"); strcpy(sstr[4],"::CorpusCallosum:ccSchzSchz:1037"); strcpy(sstr[5],"::CorpusCallosum:ccSchzSchz:1038"); strcpy(sstr[6],"::CorpusCallosum:ccSchzSchz:468"); strcpy(sstr[7],"::CorpusCallosum:ccSchzSchz:474"); strcpy(sstr[8],"::CorpusCallosum:ccSchzSchz:476"); strcpy(sstr[9],"::CorpusCallosum:ccSchzSchz:479"); strcpy(sstr[10],"::CorpusCallosum:ccSchzSchz:491"); strcpy(sstr[11],"::CorpusCallosum:ccSchzSchz:510"); strcpy(sstr[12],"::CorpusCallosum:ccSchzSchz:511"); strcpy(sstr[13],"::CorpusCallosum:ccSchzSchz:519"); strcpy(sstr[14],"::CorpusCallosum:ccSchzSchz:578"); strcpy(sstr[15],"::CorpusCallosum:ccSchzSchz:579"); strcpy(sstr[16],"::CorpusCallosum:ccSchzSchz:580"); strcpy(sstr[17],"::CorpusCallosum:ccSchzSchz:597"); strcpy(sstr[18],"::CorpusCallosum:ccSchzSchz:614"); strcpy(sstr[19],"::CorpusCallosum:ccSchzSchz:615"); strcpy(sstr[20],"::CorpusCallosum:ccSchzSchz:631"); strcpy(sstr[21],"::CorpusCallosum:ccSchzSchz:635"); strcpy(sstr[22],"::CorpusCallosum:ccSchzSchz:647"); strcpy(sstr[23],"::CorpusCallosum:ccSchzSchz:672"); strcpy(sstr[24],"::CorpusCallosum:ccSchzSchz:677"); strcpy(sstr[25],"::CorpusCallosum:ccSchzSchz:686"); strcpy(sstr[26],"::CorpusCallosum:ccSchzSchz:689"); strcpy(sstr[27],"::CorpusCallosum:ccSchzSchz:690"); strcpy(sstr[28],"::CorpusCallosum:ccSchzSchz:772"); strcpy(sstr[29],"::CorpusCallosum:ccSchzSchz:789"); strcpy(sstr[30],"::CorpusCallosum:ccSchzSchz:790"); strcpy(sstr[31],"::CorpusCallosum:ccSchzSchz:791"); strcpy(sstr[32],"::CorpusCallosum:ccSchzSchz:792"); strcpy(sstr[33],"::CorpusCallosum:ccSchzSchz:793"); strcpy(sstr[34],"::CorpusCallosum:ccSchzSchz:853"); */ strcpy(str[0],"::CorpusCallosum:ccSchzNorms:1019_2_128.buchar"); strcpy(str[1],"::CorpusCallosum:ccSchzNorms:1039_4_128.buchar"); strcpy(str[2],"::CorpusCallosum:ccSchzNorms:1042_2_128.buchar"); strcpy(str[3],"::CorpusCallosum:ccSchzNorms:1044_2_128.buchar"); strcpy(str[4],"::CorpusCallosum:ccSchzNorms:1045_2_128.buchar"); strcpy(str[5],"::CorpusCallosum:ccSchzNorms:1046_2_128.buchar"); strcpy(str[6],"::CorpusCallosum:ccSchzNorms:1050_3_128.buchar"); strcpy(str[7],"::CorpusCallosum:ccSchzNorms:1069_2_128.buchar"); strcpy(str[8],"::CorpusCallosum:ccSchzNorms:1077_2_128.buchar"); strcpy(str[9],"::CorpusCallosum:ccSchzNorms:1110_2_128.buchar"); strcpy(str[10],"::CorpusCallosum:ccSchzNorms:1112_2_128.buchar"); strcpy(str[11],"::CorpusCallosum:ccSchzNorms:1120_2_128.buchar"); strcpy(str[12],"::CorpusCallosum:ccSchzNorms:1134_2_128.buchar"); strcpy(str[13],"::CorpusCallosum:ccSchzNorms:1150_2_128.buchar"); strcpy(str[14],"::CorpusCallosum:ccSchzNorms:1151_2_128.buchar"); strcpy(str[15],"::CorpusCallosum:ccSchzNorms:1152_2_128.buchar"); strcpy(str[16],"::CorpusCallosum:ccSchzNorms:1153_2_128.buchar"); strcpy(str[17],"::CorpusCallosum:ccSchzNorms:1154_2_128.buchar"); strcpy(str[18],"::CorpusCallosum:ccSchzNorms:1155_2_128.buchar"); strcpy(str[19],"::CorpusCallosum:ccSchzNorms:1156_2_128.buchar"); strcpy(str[20],"::CorpusCallosum:ccSchzNorms:1157_2_128.buchar"); strcpy(str[21],"::CorpusCallosum:ccSchzNorms:1158_2_128.buchar"); strcpy(str[22],"::CorpusCallosum:ccSchzNorms:1159_2_128.buchar"); strcpy(str[23],"::CorpusCallosum:ccSchzNorms:1182_3_128.buchar"); strcpy(str[24],"::CorpusCallosum:ccSchzNorms:521_4_130.buchar"); strcpy(str[25],"::CorpusCallosum:ccSchzNorms:522_4_128.buchar"); strcpy(str[26],"::CorpusCallosum:ccSchzNorms:538_4_128.buchar"); strcpy(str[27],"::CorpusCallosum:ccSchzNorms:546_4_128.buchar"); strcpy(str[28],"::CorpusCallosum:ccSchzNorms:594_5_128.buchar"); strcpy(str[29],"::CorpusCallosum:ccSchzNorms:595_4_128.buchar"); strcpy(str[30],"::CorpusCallosum:ccSchzNorms:632_4_128.buchar"); strcpy(str[31],"::CorpusCallosum:ccSchzNorms:634_4_128.buchar"); strcpy(str[32],"::CorpusCallosum:ccSchzNorms:638_4_128.buchar"); strcpy(str[33],"::CorpusCallosum:ccSchzNorms:649_4_128.buchar"); strcpy(str[34],"::CorpusCallosum:ccSchzNorms:652_4_128.buchar"); strcpy(str[35],"::CorpusCallosum:ccSchzNorms:653_4_128.buchar"); strcpy(str[36],"::CorpusCallosum:ccSchzNorms:654_4_128.buchar"); strcpy(str[37],"::CorpusCallosum:ccSchzNorms:673_4_128.buchar"); strcpy(str[38],"::CorpusCallosum:ccSchzNorms:674_4_128.buchar"); strcpy(str[39],"::CorpusCallosum:ccSchzNorms:681_4_128.buchar"); strcpy(str[40],"::CorpusCallosum:ccSchzNorms:688_4_128.buchar"); strcpy(str[41],"::CorpusCallosum:ccSchzNorms:794_4_128.buchar"); strcpy(str[42],"::CorpusCallosum:ccSchzNorms:847_7_128.buchar"); strcpy(str[43],"::CorpusCallosum:ccSchzNorms:851_6_128.buchar"); strcpy(str[44],"::CorpusCallosum:ccSchzNorms:860_4_128.buchar"); strcpy(str[45],"::CorpusCallosum:ccSchzNorms:871_4_128.buchar"); strcpy(str[46],"::CorpusCallosum:ccSchzNorms:874_4_128.buchar"); strcpy(str[47],"::CorpusCallosum:ccSchzNorms:880_4_128.buchar"); strcpy(sstr[0],"::CorpusCallosum:ccSchzNorms:1019"); strcpy(sstr[1],"::CorpusCallosum:ccSchzNorms:1039"); strcpy(sstr[2],"::CorpusCallosum:ccSchzNorms:1042"); strcpy(sstr[3],"::CorpusCallosum:ccSchzNorms:1044"); strcpy(sstr[4],"::CorpusCallosum:ccSchzNorms:1045"); strcpy(sstr[5],"::CorpusCallosum:ccSchzNorms:1046"); strcpy(sstr[6],"::CorpusCallosum:ccSchzNorms:1050"); strcpy(sstr[7],"::CorpusCallosum:ccSchzNorms:1069"); strcpy(sstr[8],"::CorpusCallosum:ccSchzNorms:1077"); strcpy(sstr[9],"::CorpusCallosum:ccSchzNorms:1110"); strcpy(sstr[10],"::CorpusCallosum:ccSchzNorms:1112"); strcpy(sstr[11],"::CorpusCallosum:ccSchzNorms:1120"); strcpy(sstr[12],"::CorpusCallosum:ccSchzNorms:1134"); strcpy(sstr[13],"::CorpusCallosum:ccSchzNorms:1150"); strcpy(sstr[14],"::CorpusCallosum:ccSchzNorms:1151"); strcpy(sstr[15],"::CorpusCallosum:ccSchzNorms:1152"); strcpy(sstr[16],"::CorpusCallosum:ccSchzNorms:1153"); strcpy(sstr[17],"::CorpusCallosum:ccSchzNorms:1154"); strcpy(sstr[18],"::CorpusCallosum:ccSchzNorms:1155"); strcpy(sstr[19],"::CorpusCallosum:ccSchzNorms:1156"); strcpy(sstr[20],"::CorpusCallosum:ccSchzNorms:1157"); strcpy(sstr[21],"::CorpusCallosum:ccSchzNorms:1158"); strcpy(sstr[22],"::CorpusCallosum:ccSchzNorms:1159"); strcpy(sstr[23],"::CorpusCallosum:ccSchzNorms:1182"); strcpy(sstr[24],"::CorpusCallosum:ccSchzNorms:521"); strcpy(sstr[25],"::CorpusCallosum:ccSchzNorms:522"); strcpy(sstr[26],"::CorpusCallosum:ccSchzNorms:538"); strcpy(sstr[27],"::CorpusCallosum:ccSchzNorms:546"); strcpy(sstr[28],"::CorpusCallosum:ccSchzNorms:594"); strcpy(sstr[29],"::CorpusCallosum:ccSchzNorms:595"); strcpy(sstr[30],"::CorpusCallosum:ccSchzNorms:632"); strcpy(sstr[31],"::CorpusCallosum:ccSchzNorms:634"); strcpy(sstr[32],"::CorpusCallosum:ccSchzNorms:638"); strcpy(sstr[33],"::CorpusCallosum:ccSchzNorms:649"); strcpy(sstr[34],"::CorpusCallosum:ccSchzNorms:652"); strcpy(sstr[35],"::CorpusCallosum:ccSchzNorms:653"); strcpy(sstr[36],"::CorpusCallosum:ccSchzNorms:654"); strcpy(sstr[37],"::CorpusCallosum:ccSchzNorms:673"); strcpy(sstr[38],"::CorpusCallosum:ccSchzNorms:674"); strcpy(sstr[39],"::CorpusCallosum:ccSchzNorms:681"); strcpy(sstr[40],"::CorpusCallosum:ccSchzNorms:688"); strcpy(sstr[41],"::CorpusCallosum:ccSchzNorms:794"); strcpy(sstr[42],"::CorpusCallosum:ccSchzNorms:847"); strcpy(sstr[43],"::CorpusCallosum:ccSchzNorms:851"); strcpy(sstr[44],"::CorpusCallosum:ccSchzNorms:860"); strcpy(sstr[45],"::CorpusCallosum:ccSchzNorms:871"); strcpy(sstr[46],"::CorpusCallosum:ccSchzNorms:874"); strcpy(sstr[47],"::CorpusCallosum:ccSchzNorms:880"); for (m=0;m<count;m++) { printf("m = %d\n",m); strcpy(inname,str[m]); /* READ IN THE IMAGE */ printf("Opening %s\n",inname); if ((infile = fopen(inname,"r+")) == NULL) { printf("Cannot open %s\n",inname); exit(1); } n = fread(pic,sizeof(unsigned char),ydim*xdim,infile); printf("%d bytes in image read\n",n); fclose(infile); /* mark the boundary points */ for (i=0;i<ydim;i++) for (j=0;j<xdim;j++) bdry[i][j]=0; for (i=0;i<ydim-1;i++) for (j=0;j<xdim-1;j++) { if (pic[i][j]!=pic[i+1][j]) bdry[i][j] = bdry[i+1][j] = 1; if (pic[i][j]!=pic[i][j+1]) bdry[i][j] = bdry[i][j+1] = 1; } for (i=0;i<ydim-1;i++) { j=xdim-1; if (pic[i][j]!=pic[i+1][j]) bdry[i][j] = bdry[i+1][j] = 1; } for (j=0;j<xdim-1;j++) { i=ydim-1; if (pic[i][j]!=pic[i][j+1]) bdry[i][j] = bdry[i][j+1] = 1; } /* READ IN distance function */ strcpy(inname,sstr[m]); strcpy(d_name, inname); strcat(d_name, "dist"); printf("Opening %s\n",d_name); if ((infile = fopen(d_name,"r+")) == NULL) { printf("Cannot open %s\n",d_name); exit(1); } n = fread(v,sizeof(float),xdim*ydim,infile); fclose(infile); ridge_gr(); construct_sk(); output_results(); } printf("\n\n done \n"); systime = time(NULL); puts(ctime(&systime));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -