t_fourier fourier;
t_bmp src;
t_bmp dst;
+ t_bmp cut;
int x,y;
int offy,offt;
int scale;
bmp_init(&src,1);
bmp_init(&dst,1);
+ bmp_init(&cut,1);
src.mode=READ;
dst.mode=WRITE;
+ cut.mode=WRITE;
strcpy(src.file,argv[1]);
strcpy(dst.file,argv[2]);
+ strcpy(cut.file,argv[3]);
fourier_init(&fourier,1);
fourier.type=DFT|FWD;
fourier.dim=2;
bmp_read_file(&src);
+ bmp_cut_bottom(&cut,&src,150);
+ bmp_write_file(&cut);
dst.width=src.info.width;
dst.height=src.info.height;
// copy back the data, intensity = sqrt(r^2+i^2)
max=0;
- offy=0;
+ offt=0;
for(y=0;y<fourier.data_len[1];y++) {
for(x=0;x<fourier.data_len[0];x++) {
- offt=offy+x;
mag[offt]=sqrt(fourier.ftdata[offt].r*fourier.ftdata[offt].r+fourier.ftdata[offt].i*fourier.ftdata[offt].i);
if(mag[offt]>max) max=mag[offt];
+ offt+=1;
}
- offy+=fourier.data_len[0];
}
printf("found max: %f\n",max);
if(scale!=0) {
printf("scaling image intensity: %d\n",scale);
- for(x=0;x<dst.width*dst.height;x++) {
- dst.map[x].r=scale*mag[x];
- dst.map[x].g=dst.map[x].r;
- dst.map[x].b=dst.map[x].r;
+ offt=0;
+ for(y=0;y<dst.height;y++) {
+ for(x=0;x<dst.width;x++) {
+ offy=((y<dst.height/2)?y+dst.height/2:y-dst.height/2);
+ offy*=dst.width;
+ offy+=((x<dst.width/2)?x+dst.width/2:x-dst.width/2);
+ dst.map[offy].r=scale*mag[offt];
+ dst.map[offy].g=dst.map[offy].r;
+ dst.map[offy].b=dst.map[offy].r;
+ offt+=1;
+ }
}
}