senales
Class funciones

java.lang.Object
  extended bysenales.funciones

public class funciones
extends java.lang.Object

Title: Algunas de las funciones mas utilizadas en Procesamiento de señales

Description: Se tiene implementada una colección de funciones para realizar el procesamiento digital de imágenes

Copyright: Copyright (c) 2005

Company: UMSNH


Constructor Summary
funciones()
           
 
Method Summary
static void afin(double[][] f, double[][] g, double[] T)
          Calcula la transformación Afin de una imagen.
static double bilineal(double[][] f, double x0, double y0)
          Metodo de interporlacion bilinial, para calcular el tono de gris de una imagen en coordenadas no enteras.
static void BKernel(double[] g, int n)
          Calcula un kernel Binomial en una dimensión
static void centra(double[][] dato)
          Esta función hace un corrimiento circular al centro de la imagen
static void CKernel(double[] gk, int n)
          Calcula el kernel de caja
static void Conv2DC(double[][] g, double[][] f, double[] gkr, double[] gkc, int nk, int nr, int nc)
          Convolución circular en dos dimensiones, utilizando kerneles separables
static void Convolucion(double[][] dato, double[][] res, double[][] kernel)
          Función para calcular la convolución de una señal bidimensional con un kernel
static void Correlacion(double[][] dato, double[][] res, double[][] kernel)
          Función para calcular la correlación de una imagen con un kernel dado
static void DerivadaX(double[][] dat, double[][] res, double sigma, int nr, int nc)
          Calcula la Derivada en x de una señal bidimensional, utilizando derivadas de gaussianas
static void DerivadaXX(double[][] dat, double[][] res, double sigma, int nr, int nc)
          Segunda derivada de Gaussiana respecto de x
static void DerivadaXY(double[][] dat, double[][] res, double sigma, int nr, int nc)
          Segunda Derivada de Gaussiana respecto a X y a Y
static void DerivadaY(double[][] dat, double[][] res, double sigma, int nr, int nc)
          Calcula la Derivada en y de una señal bidimensional, utilizando derivadas de gaussianas
static void DerivadaYY(double[][] dat, double[][] res, double sigma, int nr, int nc)
          Segunda derivada de Gaussiana respecto a Y
static void Fcost1(double[] f, int n)
          Transformada de Coseno en una dimensión
static void Fcost2(double[][] f, double[][] ft, int cols, int rows)
          Transformada Directa de Coseno en dos dimensiones
static void fft1(double[] p, double[] q, int npts, int Direccion)
          Transformada de Fourier en una dimensión
static void fft2(double[][] entra_real, double[][] entra_imag, double[][] sale_real, double[][] sale_imag, int Direccion, int nr, int nc)
          Transformada de Fourier por columnas y renglones de una señal bidimensional
static void FiltroGabor(double[][] dat, double[][] br, double[][] bi, double sigma, int ko, int lo)
          Filtra una imagen dada utilizando kernels de Gabor en dos dimensiones
static void G2DerKernel(double[] gk, double sigma)
          Kernel de segundas derivadas
static void GDerKernel(double[] gk, double sigma)
          Genera un kernel de derivada Gaussiano
static void GiKernel(double[] gk, double sigma, int n, int k)
          Genera Kernel la parte imaginaria del Kernel de Gabor en una dimensión
static void GKernel(double[] gk, double sigma)
          Genera un Kernel Gaussiano con media cero y varianza sigma
static void GrKernel(double[] gk, double sigma, int n, int k)
          Genera la parte real del Kernel de Gabor
static void Icost1(double[] f, int n)
          Transformada Inversa de Coseno en una dimensión
static void Icost2(double[][] ft, double[][] f, int cols, int rows)
          Transformada Inversa de Coseno en dos dimensiones
static void InvLogPolar(double[][] datos, double[][] res)
          Transformación LogPolar Inversa
static void LogPolar(double[][] datos, double[][] res)
          Esta función Calcula la transformada Log-Polar de una imagen
static void mejores(double[][] dato, int cuantos)
           
static void quiksort(int lo, int ho, double[] valor, double[] coorx, double[] coory)
          Algoritmo de quiksort, para ordenamiento de datos flotantes
static void SincKernel(double[] gk, int n, double T)
          Calcula el Kernel de una Función Sinc
static void SuavizaBinomial(double[][] dat, double[][] res, int tam, int nr, int nc)
          Suavizado utilizando un kernel binomial
static void SuavizaCaja(double[][] dat, double[][] res, int tam, int nr, int nc)
          Suavizador de caja
static void SuavizaGauss(double[][] dat, double[][] res, double sigma, int nr, int nc)
          Suavizado utilizando Gaussiana con media cero y varianza variable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

funciones

public funciones()
Method Detail

SuavizaGauss

public static void SuavizaGauss(double[][] dat,
                                double[][] res,
                                double sigma,
                                int nr,
                                int nc)
Suavizado utilizando Gaussiana con media cero y varianza variable

Parameters:
dat - Datos de entrada
res - Datos de salida
sigma - Varianza de la distribución Gaussiana
nr - número de renglones de la imagen
nc - número de columna de la imagen
Returns:
nada

SuavizaCaja

public static void SuavizaCaja(double[][] dat,
                               double[][] res,
                               int tam,
                               int nr,
                               int nc)
Suavizador de caja

Parameters:
dat - Datos de entrada
res - Datos de salida
tam - tamaño de la ventana en pixeles
nr - número de renglones de la imagen
nc - número de columna de la imagen
Returns:
nada

SuavizaBinomial

public static void SuavizaBinomial(double[][] dat,
                                   double[][] res,
                                   int tam,
                                   int nr,
                                   int nc)
Suavizado utilizando un kernel binomial

Parameters:
dat - double[][] Datos de entrada
res - double[][] Datos de salida (señal filtrada)
tam - int Tamaño del kernel binomial
nr - int Número de renglones
nc - int Número de columnas

FiltroGabor

public static void FiltroGabor(double[][] dat,
                               double[][] br,
                               double[][] bi,
                               double sigma,
                               int ko,
                               int lo)
Filtra una imagen dada utilizando kernels de Gabor en dos dimensiones

Parameters:
dat - Datos, imagen de entrada
br - Parte real de la imagen filtrada
bi - Parte imaginaria de la imagen filtrada
sigma - Tamaño del Filtro de gabor
ko - Frecuencia espacial en x
lo - Frecuencia espacial en y

DerivadaX

public static void DerivadaX(double[][] dat,
                             double[][] res,
                             double sigma,
                             int nr,
                             int nc)
Calcula la Derivada en x de una señal bidimensional, utilizando derivadas de gaussianas

Parameters:
dat - Datos de entrada
res - Datos de Salida (derivada)
sigma - Varianza de la gaussiana
nr - Número de renglones
nc - Número de columnas

DerivadaXX

public static void DerivadaXX(double[][] dat,
                              double[][] res,
                              double sigma,
                              int nr,
                              int nc)
Segunda derivada de Gaussiana respecto de x

Parameters:
dat - double[][] Datos de entrada
res - double[][] Datos de salida
sigma - double Varianza de la gaussiana
nr - int Número de renglones
nc - int Número de columnas

DerivadaYY

public static void DerivadaYY(double[][] dat,
                              double[][] res,
                              double sigma,
                              int nr,
                              int nc)
Segunda derivada de Gaussiana respecto a Y

Parameters:
dat - double[][] Datos de entrada
res - double[][] Datos de salida
sigma - double Varianza de la Gaussiana
nr - int Número de renglones
nc - int Número de columnas

DerivadaXY

public static void DerivadaXY(double[][] dat,
                              double[][] res,
                              double sigma,
                              int nr,
                              int nc)
Segunda Derivada de Gaussiana respecto a X y a Y

Parameters:
dat - double[][] Datos de entrada
res - double[][] Datos de salida
sigma - double Varianza de la Gaussiana
nr - int Número de renglones
nc - int Número de Columnas

DerivadaY

public static void DerivadaY(double[][] dat,
                             double[][] res,
                             double sigma,
                             int nr,
                             int nc)
Calcula la Derivada en y de una señal bidimensional, utilizando derivadas de gaussianas

Parameters:
dat - Datos de entrada
res - Datos de Salida (derivada)
sigma - Varianza de la gaussiana
nr - Número de renglones
nc - Número de columnas

SincKernel

public static void SincKernel(double[] gk,
                              int n,
                              double T)
Calcula el Kernel de una Función Sinc

Parameters:
gk - double[] Información del Kernel
n - int Tamaño del Kernel
T - double Frecuencia en la que se entona

GrKernel

public static void GrKernel(double[] gk,
                            double sigma,
                            int n,
                            int k)
Genera la parte real del Kernel de Gabor

Parameters:
gk - double[] Kernel Generado
sigma - double Varianza del Kernel
n - int Tamaño del kernel
k - int Frecuencia espacial a la que se entona el kernel

GiKernel

public static void GiKernel(double[] gk,
                            double sigma,
                            int n,
                            int k)
Genera Kernel la parte imaginaria del Kernel de Gabor en una dimensión

Parameters:
gk - double[] Kernel Generado
sigma - double Varianza del kernel
n - int Tamaño del Kernel
k - int Frecuencia espacial a la que se entona

GKernel

public static void GKernel(double[] gk,
                           double sigma)
Genera un Kernel Gaussiano con media cero y varianza sigma

Parameters:
gk - double[] Kernel generado
sigma - double Varianza

GDerKernel

public static void GDerKernel(double[] gk,
                              double sigma)
Genera un kernel de derivada Gaussiano

Parameters:
gk - double[] Kernel calculado
sigma - double Varianza de la Gaussiana

G2DerKernel

public static void G2DerKernel(double[] gk,
                               double sigma)
Kernel de segundas derivadas

Parameters:
gk - double[] Kernel
sigma - double Varianza del kernel

CKernel

public static void CKernel(double[] gk,
                           int n)
Calcula el kernel de caja

Parameters:
gk - double[] Kernel calculado
n - int tamaño del Kernel

BKernel

public static void BKernel(double[] g,
                           int n)
Calcula un kernel Binomial en una dimensión

Parameters:
g - double[] Kernel calculado
n - int Tamaño del kernel

Conv2DC

public static void Conv2DC(double[][] g,
                           double[][] f,
                           double[] gkr,
                           double[] gkc,
                           int nk,
                           int nr,
                           int nc)
Convolución circular en dos dimensiones, utilizando kerneles separables

Parameters:
g - double[][] Señal de entrada
f - double[][] Señal de salida
gkr - double[] Kernel unidimensional en la dirección x
gkc - double[] Kernel unidimensional en la dirección y
nk - int Tamaño de los kerneles
nr - int Número de renglones
nc - int Número de columnas

Convolucion

public static void Convolucion(double[][] dato,
                               double[][] res,
                               double[][] kernel)
Función para calcular la convolución de una señal bidimensional con un kernel

Parameters:
dato - double[][] Datos de entrada
res - double[][] Respuesta de la convolución
kernel - double[][] Kernel de convolución

Correlacion

public static void Correlacion(double[][] dato,
                               double[][] res,
                               double[][] kernel)
Función para calcular la correlación de una imagen con un kernel dado

Parameters:
dato - double[][] Imagen de entrada
res - double[][] Imagen de salida
kernel - double[][] Kernel

fft2

public static void fft2(double[][] entra_real,
                        double[][] entra_imag,
                        double[][] sale_real,
                        double[][] sale_imag,
                        int Direccion,
                        int nr,
                        int nc)
Transformada de Fourier por columnas y renglones de una señal bidimensional

Parameters:
entra_real - double[][] Señal de entrada, parte real
entra_imag - double[][] Señal de entrada, parte imaginaria
sale_real - double[][] Señal de salida, parte real
sale_imag - double[][] Señal de salida, parte imaginaria
Direccion - int 1 indica transformada directa, -1 Transformada inversa
nr - int Número de renglones
nc - int Número de columnas

fft1

public static void fft1(double[] p,
                        double[] q,
                        int npts,
                        int Direccion)
Transformada de Fourier en una dimensión

Parameters:
p - double[] Parte real de la señal
q - double[] Parte Imaginaria de la señal
npts - int Tamaño de la muestra 2n
Direccion - int 1 transformada directa, -1 transformada inversa

Fcost2

public static void Fcost2(double[][] f,
                          double[][] ft,
                          int cols,
                          int rows)
Transformada Directa de Coseno en dos dimensiones

Parameters:
f - double[][] Señal de entrada
ft - double[][] Señal de Salida
cols - int Número de Columnas
rows - int Número de renglones

Fcost1

public static void Fcost1(double[] f,
                          int n)
Transformada de Coseno en una dimensión

Parameters:
f - double[] Señal de entrada. Los cambios se realizan sobre ella misma
n - int Tamaño de la señal

Icost2

public static void Icost2(double[][] ft,
                          double[][] f,
                          int cols,
                          int rows)
Transformada Inversa de Coseno en dos dimensiones

Parameters:
ft - double[][] Señal de entrada
f - double[][] Señal de salida
cols - int Número de columnas
rows - int Número de renglones

Icost1

public static void Icost1(double[] f,
                          int n)
Transformada Inversa de Coseno en una dimensión

Parameters:
f - double[] función a la que calcula la transformada
n - int número de datos

LogPolar

public static void LogPolar(double[][] datos,
                            double[][] res)
Esta función Calcula la transformada Log-Polar de una imagen

Parameters:
datos - double[][] Arreglo con los datos de entrada
res - double[][] Arreglo con los datos de salida

InvLogPolar

public static void InvLogPolar(double[][] datos,
                               double[][] res)
Transformación LogPolar Inversa

Parameters:
datos - double[][] Datos de entrada
res - double[][] Datos de Salida

bilineal

public static double bilineal(double[][] f,
                              double x0,
                              double y0)
Metodo de interporlacion bilinial, para calcular el tono de gris de una imagen en coordenadas no enteras.

Parameters:
f - Imagen de donde se obtiene la información
x0 - Coordenada real en el eje x
y0 - Coordenada real en el eje y
Returns:
El valor interpolado entre los cuatro vecinos cercanos a x0 y y0

afin

public static void afin(double[][] f,
                        double[][] g,
                        double[] T)
Calcula la transformación Afin de una imagen. Esta transformación puede calcular Rotaciones, Escalamientos, Cizallamientos, translaciones y combinaciones de estas.

x1 = |T0 T1| |x| + |T2|

y1 = |T3 T4| |y| + |T5|

Parameters:
f - Imagen de entrada
g - Imagen de salida
T - Transformación afin en un vector de parametros

centra

public static void centra(double[][] dato)
Esta función hace un corrimiento circular al centro de la imagen

Parameters:
dato - Datos de entrada, esta función cambia el contenido de los datos de entrada.

mejores

public static void mejores(double[][] dato,
                           int cuantos)

quiksort

public static void quiksort(int lo,
                            int ho,
                            double[] valor,
                            double[] coorx,
                            double[] coory)
Algoritmo de quiksort, para ordenamiento de datos flotantes

Parameters:
lo - int límite inicial (0)
ho - int límite final (tamaño del arreglo)
valor - double[] Arreglo a ordenar
coorx - double[] Coordenada en x del pixel
coory - double[] Coordenada en y del pixel