⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft2dview.c

📁 image processing including fourier,wavelet,segmentation etc.
💻 C
字号:
/*--------------------------- Commande MegaWave -----------------------------*//* mwcommand   name = {fft2dview};   version = {"1.4"};   author = {"Lionel Moisan"};   function = {"Compute and Visualize the 2D-FFT of a Fimage"};   usage = { 't':[type=0]->type "0=modulus (default),1=phase,2=Re,3=Im,4=log(1+modulus)", 's':[sd=50.0]->sd  "standart deviation for visualization (default: 50.0)", 'i'->i_flag        "to compute inverse FFT", 'h'->h_flag        "to apply a Hamming window first", 'o':out<-out       "to create an output Cimage instead of calling cview", input->in          "input Fimage"   };*//*----------------------------------------------------------------------  v1.1: fmeanvar() replaced by faxpb() (L.Moisan)  v1.2: cview syntax (L.Moisan)  v1.3: min = 0 when type = 0 (L.Moisan)  v1.4: upgrade faxpb() call (L.Moisan)----------------------------------------------------------------------*/#include <stdio.h>#include <math.h>#include "mw.h"/* Include the window since we use windows facility */#include "window.h"extern void    fshrink2();extern void    fhamming();extern void    fft2d();extern void    fft2dpol();extern void    faxpb();extern void    cview();#define PIXRANGE(c) ( (c)<0?0:((c)>255?255:(unsigned char)(c)) )void fft2dview(type,sd,h_flag,in,out,i_flag)int	*type;float	*sd;char    *h_flag;Fimage	in;Cimage  out;char    *i_flag;{    Fimage      tmp;    int		x,y,i,n,p,n0,p0, out_flag;    float       v, mean;        /*** for cview ***/    int         x0=50,y0=50,order=0;    float       zoom=1.0;    Wframe      *ImageWindow;    out_flag = (out!=NULL);    /*** Prepare input image (shrink, hamming) ***/    tmp = mw_new_fimage();    n0 = in->nrow;    p0 = in->ncol;    fshrink2(in,tmp);    n = tmp->nrow;    p = tmp->ncol;    if (n!=n0 || p!=p0)       mwerror(WARNING,0,"%dx%d input image has been shrinked to %dx%d\n",	      p0,n0,p,n);   if (h_flag) fhamming(tmp,tmp);    /*** Compute desired part of FFT ***/    switch(*type) {    case 0: fft2dpol( tmp,NULL,tmp ,NULL,i_flag); break;    case 1: fft2dpol( tmp,NULL,NULL,tmp ,i_flag); break;    case 2: fft2d(    tmp,NULL,tmp ,NULL,i_flag); break;    case 3: fft2d(    tmp,NULL,NULL,tmp ,i_flag); break;    case 4: fft2dpol( tmp,NULL,tmp ,NULL,i_flag);             for (i=n*p; i--; ) 	      tmp->gray[i] = (float)log1p((double)tmp->gray[i]);            break;    default: mwerror(FATAL,1,"Unrecognized argument value : type.");    }    /*** Normalize mean and variance ***/    if (*type == 0) {      faxpb(tmp,tmp,NULL,sd,NULL,NULL,NULL,NULL);    } else {      mean = 128.0;      faxpb(tmp,tmp,NULL,sd,NULL,&mean,NULL,NULL);    }    /*** Center output and sample to unsigned char values ***/    out = mw_change_cimage(out,tmp->nrow,tmp->ncol);    for (x=0; x<p; x++)      for (y=0; y<n; y++) {	v = tmp->gray[y*p+x];	out->gray[((y+n/2)%n)*p+(x+p/2)%p] = PIXRANGE(v);      }        if (!out_flag) {      ImageWindow = (Wframe *)	mw_get_window((Wframe *)NULL,out->ncol,out->nrow,x0,y0,out->name);      cview(out,&x0,&y0,&zoom,&order,NULL,ImageWindow);      mw_delete_cimage(out);    };    /*** free memory ***/    mw_delete_fimage(tmp);}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -