1) Muestre la parte real e imaginaria de la exponencial compleja exp [ (2 pi i 5x) / 128 ] para x = 0, ... 127 (en 1D)
10*pi/128=0.24543692
Parte real: f(x)=cos(2*pi*x/128)
Parte imaginaria: f(x)=sin(2*pi*x/128)
Código (CALIMAN):

         imag(1) = rampax(1,128,1.0)
         imag(2) = imag(1) * 0.24543692
         imag(3) = cos(imag(2))
         imag(4) = sin(imag(2))
      
2) Muestre la parte real e imaginaria de la exponencial compleja exp [ (2 pi i (5x + 3y)) / 128 ] para x = 0, ... 127, y = 0 , ... 127 (en 2D)
w1=10*pi/128=0.24543692; w2=6*pi*128=0.147262155
Parte real: f(x)=cos(w1*x+w2*y)
Parte imaginaria: f(x)=sin(w1*x+w2*y)
Código (CALIMAN):

         imag(1) = rampax(128,128,1.0)
         imag(2) = imag(1) * 0.245436921715736
         imag(3) = rampay(128,128,1.0)
         imag(4) = imag(3) * 0.147262156009674
         imag(5) = imag(2) + imag(4)
         imag(6) = cos(imag(5))
         imag(7) = sin(imag(5))
      
3) Muestre la magnitud y fase de las seņales de los ejercicios 1 y 2.
Bueno, es claro que la magnitud de ambas señales debe ser 1, ya que la exponencial que calculamos es de la forma exp(i(Rx+Sy)), i.e. la parte real del parámetro de la exponencial es cero, por tanto la magnitud de la exponencial es 1.
Magnitud de la señal en 1D
Magnitud de la señal en 2D
Código
Imagen
Código
Imagen
imag(1) = rampax(1,128,1.0)
imag(2) = imag(1) * 0.24543692
imag(3) = cos(imag(2))
imag(4) = sin(imag(2))
imag(5) = pow2(imag(3))
imag(6) = pow2(imag(4))
imag(7) = imag(5) + imag(6)
imag(8) = sqrt(imag(7))
imag(1) = rampax(128,128,1.0)
imag(2) = imag(1) * 0.245436921
imag(3) = rampay(128,128,1.0)
imag(4) = imag(3) * 0.147262156
imag(5) = imag(2) + imag(4)
imag(6) = cos(imag(5))
imag(7) = sin(imag(5))
imag(8) = pow2(imag(6))
imag(9) = pow2(imag(7))
imag(10) = imag(8) + imag(9)
imag(11) = sqrt(imag(10))

Fase de la señal en 1D
Código
Imagen
Gráfica
imag(1) = rampax(1,128,1.0)
imag(2) = imag(1) * 0.24543692
imag(3) = cos(imag(2))
imag(4) = sin(imag(2))
imag(5) = atan2(imag(4),imag(3))
Fase de la señal en 2D
Código
Imagen
Gráfica de la fila 64
imag(1) = rampax(128,128,1.0)
imag(2) = imag(1) * 0.245436921
imag(3) = rampay(128,128,1.0)
imag(4) = imag(3) * 0.147262156
imag(5) = imag(2) + imag(4)
imag(6) = cos(imag(5))
imag(7) = sin(imag(5))
imag(8) = atan2(imag(7),imag(6))

1) Usando el Shell, haga un programa que genere un kernel Gaussiano alargado con s = 10, e = 5 y q = k p / 20, para k = 0 , ... 20
Programa para procesar imagenes. (...y generar kérneles gaussianos). C+ + Builder 5.

Las imágenes están ordenadas de izquierda a derecha y de arriba abajo comenzando con la correspondiente a k=0
La parte descriptiva del código es:

         float gaussiana(float s, float el, float th, float x, float y)
         //s=desv. standard, el=elipticidad, th=angulo de inlinacion en radianes, (x,y)=punto de evaluacion
            {
               CMatriz R(2,2), Rt(2,2), D(2,2), T(2,2);//para más  detalles sobre la clase CMatriz vea "matrices.h"
               Cvector v(2);//Al igual que CMatriz, se trata de un objeto para facilitar las operaciones matriciales
               v.M[0]=x;
               v.M[1]=y;
               D.cero();
               D.M[0][0]=1;
               D.M[1][1]=1.0/(el*el);
               R.M[0][0]=cos(th);    R.M[0][1]=-sin(th)  ;
               R.M[1][0]=-R.M[0][1]; R.M[1][1]=R.M[0][0];//inicializamos las matrices
               Rt=R.transpuesta();
               T=R*(D*Rt);
               s=2*s*s;
               return exp(-((v*T)*v)/s) / (M_PI*s);//La definición de kernel gaussiano
               
            }

      
Nota: yo estoy midiendo los ángulos en el sentido de las manecillas del reloj!!, es por eso que invertí la matriz de cambio de base
Una combinación curiosa...