com.brownsoft.codec
Class KLTHelper

java.lang.Object
  extended bycom.brownsoft.codec.KLTHelper

public class KLTHelper
extends java.lang.Object

Title: Proyecto Codificacion de Imagenes y Video

Description:

Esta clase es un helper que trabaja con matrices. Implemento aqui varias operaciones como ser aplicar la transformada de Karhunen-Loève, convertir imagenes de un espacio de color a otro, etc

Copyright: Copyright (c) 2004

Company:

Version:
1.0
Author:
Gustavo Brown (alegus@adinet.com.uy)

Field Summary
private  int BLOCK_SIZE
           
private  int BLOCK_WIDTH
           
 Matrix eigenValues
           
 Matrix eigenVectors
           
private  int imageHeight
           
private  double[][] imageMatrix
           
private  int imageWidth
           
 Matrix invEigenVectors
           
 Matrix pcaMatrix
           
private static double[][] RGBToYCrCbMatrix
           
private static double[][] YCrCbToRGBMatrix
           
 
Constructor Summary
KLTHelper(int BLOCK_WIDTH, int BLOCK_SIZE, double[][] imageMatrix)
          Crea una instancia de KLTHelper
KLTHelper(int BLOCK_WIDTH, int BLOCK_SIZE, double[][] imageMatrix, double[][] invBasis)
           
 
Method Summary
static double[][] apply(double[][] invBasis, int imageWidth, int imageHeight, int BLOCK_WIDTH, double[][] coeffs)
           
 double[][] applyKLTByNumberOfCoefficients(int cantCoeffs)
          Aplica la transformación de Karhunen-Loève utilizando cantCoeffs vectores de la base
 double[][] blockRearrange(double[][] imageMatrix)
          Obtiene el array de vectores con la imagen, donde cada vector es un bloque de M*M
private static double[][][] convertColorSpace(Matrix cvtMatrix, double[][][] imageMatrix)
          Convierte una imagen de un espacio de color a otro (RGB <--> YCrCb)
static double[][][] convertToRGB(double[][][] imageMatrix)
          Convierte una imagen del espacio YCrCb a RGB
static double[][][] convertToYCrCb(double[][][] imageMatrix)
          Convierte una imagen del espacio RGB a YCrCb
 Matrix cov(Matrix inputMatrix)
          Obtiene la matrix de covarianza
 double[] getBlockAsVector(double[][] imageMatrix, int x, int y)
          Obtiene un bloque de la matriz y lo retorna como un vector
 double[][] getInvBasis()
          Obtiene la matriz inversa de base de la KLT
 void initialize()
           
 void pruneCoeffs(double[][] matrix, int cantToLeave)
          Elimina los N vectores de menor peso
 Matrix pruneEigenVectors(Matrix vectors, int cantToLeave)
          Elimina los N vectores de menor peso
static double[][] unblockRearrange(double[][] imageMatrix, int pixelsWidth, int pixelsHeight, int BLOCK_WIDTH)
          A partir de un array de vectores con la imagen, obtiene la matriz de la imagen
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BLOCK_SIZE

private int BLOCK_SIZE

BLOCK_WIDTH

private int BLOCK_WIDTH

eigenValues

public Matrix eigenValues

eigenVectors

public Matrix eigenVectors

imageHeight

private int imageHeight

imageMatrix

private double[][] imageMatrix

imageWidth

private int imageWidth

invEigenVectors

public Matrix invEigenVectors

pcaMatrix

public Matrix pcaMatrix

RGBToYCrCbMatrix

private static final double[][] RGBToYCrCbMatrix

YCrCbToRGBMatrix

private static final double[][] YCrCbToRGBMatrix
Constructor Detail

KLTHelper

public KLTHelper(int BLOCK_WIDTH,
                 int BLOCK_SIZE,
                 double[][] imageMatrix)
Crea una instancia de KLTHelper


KLTHelper

public KLTHelper(int BLOCK_WIDTH,
                 int BLOCK_SIZE,
                 double[][] imageMatrix,
                 double[][] invBasis)
Method Detail

apply

public static double[][] apply(double[][] invBasis,
                               int imageWidth,
                               int imageHeight,
                               int BLOCK_WIDTH,
                               double[][] coeffs)

applyKLTByNumberOfCoefficients

public double[][] applyKLTByNumberOfCoefficients(int cantCoeffs)
Aplica la transformación de Karhunen-Loève utilizando cantCoeffs vectores de la base

Parameters:
cantCoeffs - cantidad de coeficientes de la base a utilizar

blockRearrange

public double[][] blockRearrange(double[][] imageMatrix)
Obtiene el array de vectores con la imagen, donde cada vector es un bloque de M*M


convertColorSpace

private static double[][][] convertColorSpace(Matrix cvtMatrix,
                                              double[][][] imageMatrix)
Convierte una imagen de un espacio de color a otro (RGB <--> YCrCb)

Parameters:
cvtMatrix - matriz de conversión
imageMatrix - double[][][] con la imagen a convertir
Returns:
double[][][] con la matriz convertida

convertToRGB

public static double[][][] convertToRGB(double[][][] imageMatrix)
Convierte una imagen del espacio YCrCb a RGB

Parameters:
imageMatrix - matriz de la imagen a convertir (en YCrCb)
Returns:
matriz RGB

convertToYCrCb

public static double[][][] convertToYCrCb(double[][][] imageMatrix)
Convierte una imagen del espacio RGB a YCrCb

Parameters:
imageMatrix - matriz de la imagen a convertir (en RGB)
Returns:
matriz YCrCb

cov

public Matrix cov(Matrix inputMatrix)
Obtiene la matrix de covarianza


getBlockAsVector

public double[] getBlockAsVector(double[][] imageMatrix,
                                 int x,
                                 int y)
Obtiene un bloque de la matriz y lo retorna como un vector


getInvBasis

public double[][] getInvBasis()
Obtiene la matriz inversa de base de la KLT


initialize

public void initialize()

pruneCoeffs

public void pruneCoeffs(double[][] matrix,
                        int cantToLeave)
Elimina los N vectores de menor peso


pruneEigenVectors

public Matrix pruneEigenVectors(Matrix vectors,
                                int cantToLeave)
Elimina los N vectores de menor peso


unblockRearrange

public static double[][] unblockRearrange(double[][] imageMatrix,
                                          int pixelsWidth,
                                          int pixelsHeight,
                                          int BLOCK_WIDTH)
A partir de un array de vectores con la imagen, obtiene la matriz de la imagen