ait-survey

rvi-function

Jan 27th, 2014
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.04 KB | None | 0 0
  1. /*rvi program
  2. band3:
  3. http://aitech.ac.jp/~y-yama/data/rvi/band3.raw.zip
  4. band4:
  5. http://aitech.ac.jp/~y-yama/data/rvi/band4.raw.zip
  6. 512*512
  7. unsigned char
  8. made by Yoshiyuki Yamamoto
  9. ver1.0 2004/5/30*/
  10.  
  11.  
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15. //#include <time.h>
  16.  
  17. //void binary_file_read_open(FILE *fp,char *filename);
  18. //void binary_file_write_open(FILE *fp,char *filename);
  19. void unchar_rvi_calc(unsigned char *red,unsigned char *nir,float *rvi,int height,int width);
  20.  
  21.  
  22. int main(int argc,char *argv[])
  23. {
  24.   FILE *fpi1,*fpi2,*fpo;              
  25.   int i,j;
  26.   int in_height,in_width;  
  27.   unsigned char dn1,dn2;
  28.   float dn3;              
  29.   unsigned char *file1,*file2;
  30.   float *file3;
  31.     //float *file3;          
  32.     //float start,end;
  33.    
  34.     //start=clock();
  35.  
  36.   if(argc!=6)
  37.   {
  38.         fprintf(stderr,"Usage: %s\n(2)Input_R_READ_filename\n(3)Input_NIR_READ_filename\n(4)Output_RVI_filename\n(5)width\n(6)height\n\n",argv[0]);
  39.         exit(1);
  40.   }
  41.  
  42.   printf("OPEN R FILE NAME:%s\n",argv[1]);
  43.   printf("OPEN NIR FILE NAME:\%s\n",argv[2]);
  44.   printf("OPEN OUTPUT FILE NAME:%s\n",argv[3]);
  45.  
  46.   in_width = atoi(argv[4]); printf("W = %d,", in_width);    
  47.   in_height = atoi(argv[5]); printf("H = %d\n", in_height);
  48.    
  49.     //header=atoi(argv[6]);printf("header=%d\n",header);
  50.  
  51.   //implementing dynamic memory allocation
  52.   file1= (unsigned char *)malloc(in_width*in_height*sizeof(char));
  53.   file2= (unsigned char *)malloc(in_width*in_height*sizeof(char));
  54.   file3= (float *)malloc(in_width*in_height*sizeof(float));
  55.  
  56.   if((fpi1=fopen(argv[1],"rb"))==NULL)
  57.   {    
  58.     fprintf(stderr,"input file open error\n");
  59.     exit(1);
  60.   }
  61.  
  62.   if((fpi2=fopen(argv[2],"rb"))==NULL)
  63.   {    
  64.     fprintf(stderr,"input file open error\n");
  65.     exit(1);
  66.   }
  67.  
  68.    if((fpo=fopen(argv[3],"wb"))==NULL)
  69.   {    
  70.     fprintf(stderr,"input file open error\n");
  71.     exit(1);
  72.   }
  73.  
  74.   printf("check1\n");
  75.  
  76.   //binary_file_read_open(fpi1,argv[1]);
  77.   printf("check1-1\n");
  78.   fread((unsigned char *)file1,sizeof(char),in_width*in_height*sizeof(char),fpi1);
  79.  
  80.   printf("check1-2\n");
  81.   //binary_file_read_open(fpi2,argv[2]);
  82.   fread((unsigned char *)file2,sizeof(char),in_width*in_height,fpi2);
  83.  
  84.   printf("check2\n");
  85.   //binary_file_write_open(fpi2,argv[3]);
  86.         //fread((float *)file3,sizeof(float),width*height,fpo);
  87.   unchar_rvi_calc(file1,file2,file3,in_height,in_width);
  88.   printf("check3\n");
  89.   fwrite(file3,sizeof(float),in_height*in_width,fpo);
  90.    
  91.   free(file1);
  92.   free(file2);
  93.   free(file3);
  94.     //free(file3);
  95.   fclose(fpi1);
  96.   fclose(fpi2);
  97.   fclose(fpo);
  98. }
  99.  
  100.  
  101.  
  102. void unchar_rvi_calc(unsigned char *red,unsigned char *nir,float *rvi,int height,int width)
  103. {
  104.   int i,j;
  105.   unsigned char dn1,dn2;
  106.   float dn3;
  107.  
  108.   for(i=0;i<height;i++)
  109.   {
  110.     for(j=0;j<width;j++)
  111.     {
  112.       dn1=red[i*width+j];
  113.       dn2=nir[i*width+j];
  114.       dn3=(float)dn2/(float)dn1;
  115.       rvi[i*width+j]=dn3;
  116.       //printf("rvi=%f\n",rvi[i*width+j]);
  117.       //fwrite(&dn3,sizeof(float),1,fpo); /*míPà ïWçÇÉfÅ[É^ÇÃèëÇ´çûÇ›*/
  118.     }
  119.   }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment