Calculo de los CSF Weights

image_pdfimage_print

De cara a la escritura de la Tesis, en esta entrada voy a explicar cómo se calculan correctamente los CSF Weights basándose en lo expuesto por Beegan.

Daré los Peak CSF Weights por niveles y por subbandas.

En la versión que se ha utilizado en todos los papers hasta ahora se ha utilizado el código en GetCSFWeights.m y en GetCSFSbWeights.m para niveles y subbandas. En la versión de subbandas se hacía un escalado proporcional para mantener los valores picos de cada nivel y para ello se utilizaba un (inventado) SF ScalingFactor.

Esto se ha entendido y se ha corregido, de forma que ahora se hace bien en la versión de código en GetCSFWeightsNew.m que da tanto los valores nuevos por niveles y los valores por subbandas. Este es el método que voy a explicar aqui.

Esta es la linea de llamada

[lev_csfw, sb_csfw, sbmed_csfw, fmax]=GetCSFWeightsNew(Fmax_pxdg,nlevels,flat)

Fmax_pxdg es la Frecuencia máxima en pixels por degree que tiene la curva CSF en su extremo derecho.
nlevels es el número de niveles
flat indica si llegado a la frecuencia máxima se colocan todos los pesos al máximo, como propone Nadenau para lo que el denomina el peor caso.

Se calcula la curva csf con el siguiente código, (es la función csf)

% Calculo de la CSF en un array sin necesidad de llamar a funcion csf() o H()
a=-(0.114.*f).^1.1;
csf=2.6*(0.0192+0.114*f).*exp(a);

Se define un rango de 0:0.1:fmax que genera 6400 bins, es decir 6400 puntos para el calculo de la CSF.

Para cada subbanda wavelet, se definen los bins mayor y menor que la deliminan y se define también el valor de la csf para esos bins.

 

 

Publicado en Old Perceptual Coding, Perceptual Quantization.