pg3


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

/* ----------------------------------------
Image Processing pg1.c
Image Ratio Processing / NDVI Gray Image Output
(c)Ichinoseki National College Advanced Course
------------------------------------------ */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>  

main(argc,argv)
int argc;
char *argv[];
{
static int  i,j,m;
static double a1,a2,a3;
static int pixel,line;
FILE *fp1,*fp2,*fp3;

/* Command parameter check  */
if (argc!=6){
printf("Usage : command input_file1 input_file2 pixel line output_file\n");
return 1;
}
/* Image size parameter load */
sscanf(argv[3],"%d",&pixel);
sscanf(argv[4],"%d",&line);

/* Input image file1 check */
if (( fp1=fopen(argv[1],"r") )==NULL){
printf("Can't open input_file\n");
return 1;
}
/* Input image file1 check */
if (( fp2=fopen(argv[2],"r") )==NULL){
printf("Can't open input_file\n");
return 1;
}

/* Output image file check */
if (( fp3=fopen(argv[5],"w") )==NULL){
printf("Can't open output_file\n");
return 1;
}

/* Skip header data of Input Image */
fseek(fp1,24,0);
fseek(fp2,24,0);

/* ppm header output */
fprintf(fp3,"P6\n");
fprintf(fp3,"# INCT\n");
fprintf(fp3,"%s %s\n",argv[3],argv[4]);
fprintf(fp3,"255\n");

/* NDVI processing */
for (j=0; j<line; j++)
{
for (i=0; i<pixel; i++)
{
a1=(double)getc(fp1);
a2=(double)getc(fp2);
a3=(a1-a2)/(a1+a2);
m=(0.2+a3)*212.5;

/*NDVI値が-0.2以下ならば黒を出力。それ以外ならPseudo colorを出力。*/
if(a3<-0.2){
putc(0,fp3);
putc(0,fp3);
putc(0,fp3);
}
else{
putc(127.0*(1.0+cos(m*9.5/255.0)),fp3);
putc(255.0*cos(m*1.5/255.0),fp3);
putc(255.0*(1-a1/255.0),fp3);
}
}
}

fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。