void
lmrcFFTAmplitude(mrcImage* img, mrcImage* fft)
{
- long ix, iy, offset;
+ long ix, iy, iz, offset;
double data, re, im;
offset = lmrcFFTExpressionOffset(fft);
- for(ix=0; ix<img->HeaderN.x; ix++) {
+ for(iz=0; iz<img->HeaderN.z; iz++){
for(iy=0; iy<img->HeaderN.y; iy++) {
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &re, mrcPixelRePart, mrcPixelHowNearest);
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &im, mrcPixelImPart, mrcPixelHowNearest);
- data = sqrt(re*re + im*im);
- mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, 0.0, data, mrcPixelRePart);
+ for(ix=0; ix<img->HeaderN.x; ix++) {
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &re, mrcPixelRePart, mrcPixelHowNearest);
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &im, mrcPixelImPart, mrcPixelHowNearest);
+ data = sqrt(re*re + im*im);
+ mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, (mrcImageParaTypeReal)iz, data, mrcPixelRePart);
+ }
}
}
}
void
lmrcFFTLogAmplitude(mrcImage* img, mrcImage* fft ,double th)
{
- long ix, iy;
+ long ix, iy, iz;
double data, re, im;
long offset;
offset = lmrcFFTExpressionOffset(fft);
- for(ix=0; ix<img->HeaderN.x; ix++) {
+ for(iz=0; iz<img->HeaderN.z; iz++){
for(iy=0; iy<img->HeaderN.y; iy++) {
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &re, mrcPixelRePart, mrcPixelHowNearest);
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &im, mrcPixelImPart, mrcPixelHowNearest);
- data=re*re + im*im;
- if (data < th){
- data = log10(th)/2.0;
- } else {
- data = log10(data)/2.0;
- }
- mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, 0.0, data, mrcPixelRePart);
+ for(ix=0; ix<img->HeaderN.x; ix++) {
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &re, mrcPixelRePart, mrcPixelHowNearest);
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &im, mrcPixelImPart, mrcPixelHowNearest);
+ data = sqrt(re*re + im*im);
+ if (data < th){
+ data = log10(th)/2.0;
+ } else {
+ data = log10(data)/2.0;
+ }
+ mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, (mrcImageParaTypeReal)iz, data, mrcPixelRePart);
+ }
}
}
}
void
lmrcFFTPower(mrcImage* img, mrcImage* fft)
{
- long ix, iy;
+ long ix, iy, iz;
double data, re, im;
long offset;
offset = lmrcFFTExpressionOffset(fft);
- for(ix=0; ix<img->HeaderN.x; ix++) {
+ for(iz=0; iz<img->HeaderN.z; iz++){
for(iy=0; iy<img->HeaderN.y; iy++) {
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &re, mrcPixelRePart, mrcPixelHowNearest);
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &im, mrcPixelImPart, mrcPixelHowNearest);
- data = re*re + im*im;
- mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, 0.0, data, mrcPixelRePart);
+ for(ix=0; ix<img->HeaderN.x; ix++) {
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &re, mrcPixelRePart, mrcPixelHowNearest);
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &im, mrcPixelImPart, mrcPixelHowNearest);
+ data = re*re + im*im;
+ mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, (mrcImageParaTypeReal)iz, data, mrcPixelRePart);
+ }
}
}
}
void
lmrcFFTLogPower(mrcImage* img, mrcImage* fft ,double th)
{
- long ix, iy;
+ long ix, iy, iz;
double data, re, im;
long offset;
offset = lmrcFFTExpressionOffset(fft);
- for(ix=0; ix<img->HeaderN.x; ix++) {
+ for(iz=0; iz<img->HeaderN.z; iz++){
for(iy=0; iy<img->HeaderN.y; iy++) {
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &re, mrcPixelRePart, mrcPixelHowNearest);
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &im, mrcPixelImPart, mrcPixelHowNearest);
- data = re*re + im*im;
- if (data < th){
- data = log10(th);
- } else {
- data = log10(re*re + im*im);
- }
- mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, 0.0, data, mrcPixelRePart);
+ for(ix=0; ix<img->HeaderN.x; ix++) {
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &re, mrcPixelRePart, mrcPixelHowNearest);
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &im, mrcPixelImPart, mrcPixelHowNearest);
+ data = re*re + im*im;
+ if (data < th){
+ data = log10(th);
+ } else {
+ data = log10(re*re + im*im);
+ }
+ mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, (mrcImageParaTypeReal)iz, data, mrcPixelRePart);
+ }
}
}
}
void
lmrcFFTPhase(mrcImage* img, mrcImage* fft)
{
- long ix, iy;
+ long ix, iy, iz;
double data, re, im;
long offset;
offset = lmrcFFTExpressionOffset(fft);
- for(ix=0; ix<img->HeaderN.x; ix++) {
+ for(iz=0; iz<img->HeaderN.z; iz++){
for(iy=0; iy<img->HeaderN.y; iy++) {
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &data, mrcPixelPhase, mrcPixelHowNearest);
- mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, 0.0, data, mrcPixelRePart);
+ for(ix=0; ix<img->HeaderN.x; ix++) {
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &data, mrcPixelRePart, mrcPixelHowNearest);
+ mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, (mrcImageParaTypeReal)iz, data, mrcPixelRePart);
+ }
}
}
}
void
lmrcFFTReal(mrcImage* img, mrcImage* fft)
{
- long ix, iy;
+ long ix, iy, iz;
double data, re, im;
long offset;
offset = lmrcFFTExpressionOffset(fft);
- for(ix=0; ix<img->HeaderN.x; ix++) {
+ for(iz=0; iz<img->HeaderN.z; iz++){
for(iy=0; iy<img->HeaderN.y; iy++) {
- mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, 0.0, &re, mrcPixelRePart, mrcPixelHowNearest);
- data = re;
- mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, 0.0, data, mrcPixelRePart);
+ for(ix=0; ix<img->HeaderN.x; ix++) {
+ mrcPixelDataGet(fft, (mrcImageParaTypeReal)ix-img->HeaderN.x/2, (mrcImageParaTypeReal)iy-img->HeaderN.y/2+offset, (mrcImageParaTypeReal)iz-img->HeaderN.z/2, &re, mrcPixelRePart, mrcPixelHowNearest);
+ data = re;
+ mrcPixelDataSet(img, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, (mrcImageParaTypeReal)iz, data, mrcPixelRePart);
+ }
}
}
}