Pregunta

Necesito uniformemente re-cuantizar el rango dinámico de una imagen basada en el siguiente valor de píxel de conversiones:

Pixel Value: Quantized Value
0 - 64     : 31
65 - 128   : 95
129 - 192  : 159
193 - 255  : 223

Quiero reemplazar todos los valores de los píxeles en el por encima de los rangos con los valores cuantizados.¿Cómo puedo este código en MATLAB?

¿Fue útil?

Solución

Es una forma de utilizar lógica de indexación.Dada una imagen de la matriz img (que podría ser 2-D escala de grises o en 3-D, RGB), esto va a reemplazar todos los valores:

img(img >= 0 & img <= 64) = 31;
img(img >= 65 & img <= 128) = 95;
img(img >= 129 & img <= 192) = 159;
img(img >= 193 & img <= 255) = 223;

Otra opción es crear un 256-elemento de la tabla y el uso de los valores en su imagen como índices en esta tabla:

lookupTable = [31.*ones(1,65) 95.*ones(1,64) 159.*ones(1,64) 223.*ones(1,63)];
img = uint8(lookupTable(double(img)+1));

Tenga en cuenta que con esta solución tendrá que ser conscientes de la clase de la imagen de la matriz.Muchas de las imágenes son de la clase uint8, abarca los valores de 0 a 255.Para utilizar estos valores como un índice tienes que convertirlos a una clase que puede almacenar grandes enteros (como double) para evitar problemas de saturación en el valor máximo de 255, a continuación, añadir uno ya que se necesita un índice de 1 a 256.Entonces usted desea convertir la imagen resultante de la matriz de regreso a clase uint8.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top