📄 main.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define USAGE "usage: proc input-filename width height output-filename\n "
/*
$B:#EY$N1i=,$O%U!<%j%(JQ49$rMQ$$$?1i=,$G$9!#(B
$B$^$:!":G=i$K%U!<%j%(JQ49$r9T$$(B,
$B$=$N$^$^5UJQ49$r$*$3$J$$!"(B
$BI=<($7$F$_$^$7$g$&!#(B
$B%3%s%Q%$%k$O(B
Make
$B$G$G$-$^$9!#(B
$B<B9T$O(B
proc $BF~NO2hA|$N%U%!%$%kL>(B $BI}(B $B9b$5(B $B=PNO2hA|$N%U%!%$%kL>(B
$B$H$J$j$^$9!#(B
$B<B9TNc(B:
proc chest.raw 512 512 test.raw
$BI=<(Nc(B:
../x8view test.raw 512 512
*/
/*$B4X?t$N%W%m%H%?%$%W@k8@(B
$B>/$75,LO$,$*$*$-$/$J$C$F!"4X?t$,A}$($?$H$-$O$d$k$3$H(B*/
void get_args(int argc, char **argv);
void image_read_char(char *filename,int offset,
int width, int height,unsigned char *im);
void image_write_char(char *filename,
int w, int h,
unsigned char *im);
void FFT1(double *re_part, double *im_part,
int num_of_data, int flag);
void FFT2(double *redata, double *imdata,
int width, int height, int flag);
/*$B%0%m!<%P%kJQ?t(B*/
unsigned char *in, *out;
int width,height,header_size;
int main(int argc, char **argv)
{
double *redata, *imdata;
int i,j,mat_size;
get_args(argc,argv);
mat_size = width * height;
/*$B2hA|$NJ]B8@h(B*/
in = malloc(mat_size * sizeof(char));
out = malloc(mat_size * sizeof(char));
/*
$B%U!<%j%(JQ49$K$O(Bdouble$B7?$GJ#AG?t$NCM$,I,MW$K$J$k!#(B
$B$=$N$?$a!"<B?tIt$NG[Ns$H5u?tIt$NG[Ns$rMQ0U$9$k!#(B
$B2hAG?t$HF1$8!#J#AG?t$O<B?t$H5u?t$+$i$J$kCM!#(B
$B$3$3$G$O!"<B?tIt$O(Bredata. $B5u?tIt$O(Bimdata$B$GI=$9!#(B
*/
redata = malloc(mat_size * sizeof(double));
imdata = malloc(mat_size * sizeof(double));
/*$BJQ49$r9T$&2hA|$rFI$_9~$`(B*/
image_read_char(argv[1],header_size,width, height,in);
/*$B2hA|%G!<%?$r%@%V%k7?$NG[Ns$KF~$l$k!#(B
$B$?$@$7!"<B?tIt$K$@$1F~$l$l$PNI$$!#(B
$B5u?tIt$O#0$G$&$a$k!#<B:]$N:n6H$O(B
char2double$B4X?t$K$^$+$;$k(B
*/
char2double(in,redata,imdata,width*height);
/*$B%U!<%j%(JQ49$N4X?t$KJ#AG?t(B,$B2hA|$NI}!"9b$5$rEO$9!#(B
$B:G8e$N#1$O%U!<%j%(JQ49$r$7$a$9!#(B
-1$B$N>l9g$O%U!<%j%(5UJQ49(B
$BJQ498e$N%9%Z%/%H%k$OJ#AG?t$K$J$k$N$G(B,
$B$=$l$O!"F~NOMQ$NG[Ns$K$O$$$C$FJV$C$F$/$k!#(B
*/
FFT2(redata, imdata, width, height, 1);
/*
$B$3$N4V$O6u4V<~GH?tNN0h$K$J$k$N$G!"(B
$B6u4V<~GH?tNN0h$G$N=hM}$r9T$&$H$-$K$O(B,
redata, imdata$B$KBP$7$F=hM}$r$*$3$J$&$3$H$K$J$k!#(B
$B$9$J$o$A!"(Bredata, imdata$B$+$i$J$kJ#AG?t$rA`:n$9$k$3$H$K$J$k(B
$B$=$7$F!"$=$N=hM}$r$*$3$J$C$?J#AG?t$r5UJQ49$7$F(B
$B6u4VNN0h$X$b$I$7$F$d$l$P!"$h$$(B
*/
/*$B$J$K$b$7$J$$$G!":#EY$O5UJQ49$7$F$_$^$7$g$&(B
$BF~NO$N2hA|$HF1$8$K$J$k$O$:$G$9(B
$B5UJQ49$r9T$C$?7k2L$O<B?t$K$J$j(B,
$BJ#AG?t$N<B?tItJ,$K$O$$$C$F$-$^$9(B
*/
FFT2(redata, imdata, width, height, -1);
double2char(out,redata,imdata,width*height);
image_write_char(argv[4],width,height,out);
return 0;
}
/*$B%3%^%s%I%i%$%s$NFI$_9~$_(B*/
void get_args(int argc, char **argv)
{
if(argc != 5)
{
fprintf(stderr, USAGE);
exit(1);
}
width = atoi(argv[2]); printf("Image Size is W = %d,", width);
height = atoi(argv[3]); printf("H = %d\n", height);
}
/*$B%U%!%$%k$NFI$_9~$_(B*/
void image_read_char(char *filename,
int offset, int w, int h,
unsigned char *im)
{
FILE *fp;
if ((fp=fopen(filename,"rb")) == NULL){
printf("File Open Error Occured!\n");
exit(-1);
}
fseek(fp,offset,0);
fread((unsigned char *)im,sizeof(char),w*h,fp);
fclose(fp);
printf("File Opening: %s\n",filename);
}
/*$B%U%!%$%k$N=q$-9~$_!#Bg$-$5$bEO$9;EMM(B*/
void image_write_char(char *filename,
int w, int h,
unsigned char *im)
{
FILE *fp;
if ((fp=fopen(filename,"wb")) == NULL){
printf("File Open Error Occured!\n");
exit(-1);
}
fwrite((unsigned char *)im, sizeof(char), w * h, fp);
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -