Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*rvi program
- band3:
- http://aitech.ac.jp/~y-yama/data/rvi/band3.raw.zip
- band4:
- http://aitech.ac.jp/~y-yama/data/rvi/band4.raw.zip
- 512*512
- unsigned char
- made by Yoshiyuki Yamamoto
- ver1.0 2004/5/30*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- //#include <time.h>
- //void binary_file_read_open(FILE *fp,char *filename);
- //void binary_file_write_open(FILE *fp,char *filename);
- void unchar_rvi_calc(unsigned char *red,unsigned char *nir,float *rvi,int height,int width);
- int main(int argc,char *argv[])
- {
- FILE *fpi1,*fpi2,*fpo;
- int i,j;
- int in_height,in_width;
- unsigned char dn1,dn2;
- float dn3;
- unsigned char *file1,*file2;
- float *file3;
- //float *file3;
- //float start,end;
- //start=clock();
- if(argc!=6)
- {
- 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]);
- exit(1);
- }
- printf("OPEN R FILE NAME:%s\n",argv[1]);
- printf("OPEN NIR FILE NAME:\%s\n",argv[2]);
- printf("OPEN OUTPUT FILE NAME:%s\n",argv[3]);
- in_width = atoi(argv[4]); printf("W = %d,", in_width);
- in_height = atoi(argv[5]); printf("H = %d\n", in_height);
- //header=atoi(argv[6]);printf("header=%d\n",header);
- //implementing dynamic memory allocation
- file1= (unsigned char *)malloc(in_width*in_height*sizeof(char));
- file2= (unsigned char *)malloc(in_width*in_height*sizeof(char));
- file3= (float *)malloc(in_width*in_height*sizeof(float));
- if((fpi1=fopen(argv[1],"rb"))==NULL)
- {
- fprintf(stderr,"input file open error\n");
- exit(1);
- }
- if((fpi2=fopen(argv[2],"rb"))==NULL)
- {
- fprintf(stderr,"input file open error\n");
- exit(1);
- }
- if((fpo=fopen(argv[3],"wb"))==NULL)
- {
- fprintf(stderr,"input file open error\n");
- exit(1);
- }
- printf("check1\n");
- //binary_file_read_open(fpi1,argv[1]);
- printf("check1-1\n");
- fread((unsigned char *)file1,sizeof(char),in_width*in_height*sizeof(char),fpi1);
- printf("check1-2\n");
- //binary_file_read_open(fpi2,argv[2]);
- fread((unsigned char *)file2,sizeof(char),in_width*in_height,fpi2);
- printf("check2\n");
- //binary_file_write_open(fpi2,argv[3]);
- //fread((float *)file3,sizeof(float),width*height,fpo);
- unchar_rvi_calc(file1,file2,file3,in_height,in_width);
- printf("check3\n");
- fwrite(file3,sizeof(float),in_height*in_width,fpo);
- free(file1);
- free(file2);
- free(file3);
- //free(file3);
- fclose(fpi1);
- fclose(fpi2);
- fclose(fpo);
- }
- void unchar_rvi_calc(unsigned char *red,unsigned char *nir,float *rvi,int height,int width)
- {
- int i,j;
- unsigned char dn1,dn2;
- float dn3;
- for(i=0;i<height;i++)
- {
- for(j=0;j<width;j++)
- {
- dn1=red[i*width+j];
- dn2=nir[i*width+j];
- dn3=(float)dn2/(float)dn1;
- rvi[i*width+j]=dn3;
- //printf("rvi=%f\n",rvi[i*width+j]);
- //fwrite(&dn3,sizeof(float),1,fpo); /*míPà ïWçÇÉfÅ[É^ÇÃèëÇ´çûÇ›*/
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment