You are on page 1of 6

Prcticas de laboratorio

Prctica 3: Realce de imgenes

1. DESCRIPCIN Y REALIZACIN DEL PROBLEMA


Se trata de desarrollar un conjunto sencillo de algoritmos en C para ejecutar operaciones de REALCE por expansin y ecualizacin del histograma. Para ello, se realizar un programa capaz de ejecutar las siguientes operaciones: 1. Expansin del histograma. 2. Ecualizacin del histograma. 3. Ecualizacin para imgenes a color

Fco Javier Molina Cantero

Pag. 1

1.1 Expansin del histograma El algoritmo calcular automticamente el rango a expandir, partiendo del porcentaje de puntos excluidos, asignndolos a partes iguales a los niveles superior e inferior del histograma.
Histograma N 256 Funcin de Correspondencia

128

64

128

192

256

0 Min

128

256 Max

Min

Max

Las funciones a desarrollar son las siguientes:


CARPETA: Pannels FICHERO: P3_Enhance.cpp VISIONDLL_API long fnButtonHistoExpand( unsigned char **Image, int Rows, int Cols, int Degradation) { return 0; } CARPETA: Library FICHERO: Histogram.cpp // Calcula el histograma de una imagen monocromtica // La curva resultante es de 256 puntos y se devuelve en el vector buffer void Histogram(unsigned char **Image, int Rows, int Cols, float *buffer) { }

Pag. 2

CARPETA: Library FICHERO: Enhancent.cpp // Funcin de realce por expansin del histograma mediante corte de colas // El resultado se devuelve en la misma imagen de entrada void imageHistogramExpand(unsigned char **Image, int Filas, int Cols, int degradation) { }

NOTA: Utilice la funcin DisplayImageHistogram antes y despus de la ecualizacin para comprobar cmo cambia el histograma. 1.2 Ecualizacin del Histograma Desarrolle las funciones necesarias siguiendo el algoritmo conocido. Deber programar las siguiente funciones:
CARPETA: Pannels FICHERO: P3_Enhance.cpp VISIONDLL_API long fnButtonHistoEqualization( { return 0; } CARPETA: Library FICHERO: Enhancent.cpp // El resultado se devuelve en la misma imagen de entrada void imageHistogramEqualization(unsigned char **Image, int Filas, int Cols) { } unsigned char **Image, int Filas, int Cols)

NOTA: Utilice la funcin DisplayImageHistogram antes y despus de la ecualizacin para comprobar cmo cambia el histograma.
Fco Javier Molina Cantero Pag. 3

1.3 Expansin del Histograma en imgenes a color Existen numerosas adaptaciones del algoritmo de expansin del histograma para realce de imgenes a color. En casi todas son comunes los siguientes pasos: Seleccionar una banda Calcular a partir de esta banda una funcin de correspondencia, usando alguno de los mtodos conocidos para imgenes monocromticas (expansin, ecualizacin, ...) Aplicar la funcin de correspondencia a todas.

En el caso de la expansin, este proceso significa que los colores (RGB) son convertidos a (RGB) mediante una constante de proporcionalidad. Cabe por tanto esperar que mantenga los colores originales intactos. Sin embargo, esta hiptesis es incorrecta. A) Razone por qu. B) En este ejercicio proponemos un algoritmo alternativo. Consiste en calcular a partir de los histogramas de las tres bandas, los valores Max y Min de la curva de expansin con el siguiente criterio: Calcular Max y Min para cada banda utilizando el porcentaje de puntos excluidos. Seleccionar como Max el mayor de los obtenidos en las tres bandas Seleccionar como Min el menor de los obtenidos en las tres bandas

C) Est garantizado ahora el mantenimiento de las proporciones entre colores ?.Dnde radica entonces la ventaja de este algoritmo?. Programe el algoritmo descrito en las siguientes funciones:
CARPETA: Pannels FICHERO: P3_Enhance.cpp VISIONDLL_API long fnButtonHistoColorExpand( unsigned char *R, unsigned char *G, unsigned char *B, int Filas, int Cols, float Degradacion) { return 0; }

Pag. 4

CARPETA: Library FICHERO: Enhancent.cpp void imageColorHistogramExpand( unsigned char *R, unsigned char *G, unsigned char *B, int Filas, int Cols, float degradacion) { return 0; }

1.4 Ecualizacin del Histograma L en imgenes a color La tcnica de Ecualizacin del Histograma tambin puede extenderse a imgenes en color, aunque su aplicacin directa sobre las bandas R, G B no garantiza que se mantenga la tinta de los colores. Un sencillo algoritmo basado en las transformaciones RGB - HLS puede reducir este problema: Transformar la imagen RGB a HLS Aplicar el algoritmo de ecualizacin a la matriz L Invertir la imagen HLS a RGB

Empleando las funciones desarrolladas en la librera de color, slo deber programar las siguientes:
CARPETA: Library FICHERO: Enhancent.cpp VISIONDLL_API long fnButtonLumEqualization( unsigned char **R, unsigned char **G, unsigned char **B, int Filas, int Cols) { return 0; } CARPETA: Library FICHERO: Enhancent.cpp void imageLumEqualizationColor( unsigned char **R,unsigned char **G, unsigned char **B, int Filas,int Cols) { }

Fco Javier Molina Cantero

Pag. 5

2. IMGENES DE TEST

Fichero: copter.bmp

Fichero: infrared.bmp

Fichero: hotel.bmp

Pag. 6

You might also like