Está en la página 1de 4

Centro de Enseñanza Técnica Industrial

Plantel Colomos
Ingeniería en Desarrollo de Software
Procesamiento de Imágenes

REPORTE DE PRÁCTICA

IDENTIFICACIÓN DE LA PRÁCTICA

Práctica 8 Nombre de la práctica Adaptación automática de contraste


Fecha 27/05/22 Nombre del profesor Alma Nayeli Rodríguez Vázquez
Nombre del estudiante LUIS PABLO NIETO GIL

OBJETIVO
El objetivo de esta práctica consiste en implementar la técnica de adaptación automática de contraste
para mejorar la calidad de una imagen en escala de grises.

PROCEDIMIENTO
Realiza la implementación siguiendo estas instrucciones.
Realiza un programa en C/C++ utilizando OpenCV en el que leas una imagen desde archivo utilizando el
modo IMREAD_GRAYSCALE. Desarrolla la técnica de adaptación automática de contraste. Para ello
considera los siguientes requerimientos:

1. Implementa la siguiente función para la mejora de contraste de la imagen:


void adaptacionContraste(Mat img_src, Mat* img_dst);
El primer argumento de la función corresponde a la imagen que será mejorada, mientras que el
segundo argumento corresponde a la imagen en la que se guardará la imagen mejorada.

2. Reporta los resultados obtenidos.


3. Utiliza las imágenes adjuntas en esta actividad.

IMPLEMENTACIÓN
Agrega el código de tu implementación aquí.
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;


using namespace std;

void histograma(Mat img, Mat* grafica, int* h) {


uchar* pImg;

for (int x = 0; x < img.rows; x++) {


pImg = img.ptr<uchar>(x);
for (int y = 0; y < img.cols; y++) {
h[pImg[y]] ++; }
}
grafica->create(256, 256, CV_8UC1);
int* max = max_element(h, h + 256);

for (int i = 0; i < 256; i++) {

1
Centro de Enseñanza Técnica Industrial
Plantel Colomos
Ingeniería en Desarrollo de Software
Procesamiento de Imágenes
for (int j = 0; j < h[i] * 256 / (*max); j++) {
pImg = grafica->ptr<uchar>(grafica->rows - 1 - j);
pImg[i] = i;
}
}
}
//Adaptacion automatica de contraste
void contrasteAutomatico(Mat origen, Mat* destino) {
uchar* pOrigen, * pDestino;

float pHigh=0, pLow=0, pMin = 0, pMax = 255;


int h[256] = { 0 };
Mat grafica;
histograma(origen, &grafica, h);
for (int i = 0; i < 256; i++) {
if (h[i] != 0) {
pLow = (float) i;
break;
}
}
for (int i = 255; i >= 0; i--) {
if (h[i] != 0) {
pHigh = (float) i;
break;
}
}

//imshow("histograma Contraste", grafica);


for (int i = 0; i < origen.rows; i++) {
pOrigen = origen.ptr<uchar>(i);
pDestino = destino->ptr<uchar>(i);
for (int j = 0; j < origen.cols; j++) {
pDestino[j] = (unsigned char) ((((pOrigen[j] - pLow) * (pMax - pMin) )/ (pHigh - pLow))
+ pMin);
}
}
}

int main()
{
//imagen Original
Mat imagen = imread("caballo2.jpg", IMREAD_GRAYSCALE);
//Contraste Automatico
Mat imagenContraste(imagen.rows, imagen.cols, imagen.type());
contrasteAutomatico(imagen, &imagenContraste);

//Histogramas
int h[256] = { 0 };
Mat histContAuto, hisImg;
histograma(imagen, &hisImg, h);
histograma(imagenContraste, &histContAuto, h);
imshow("img", imagen);
imshow("imagen contraste automatico", imagenContraste);
imshow("Histograma Original", hisImg);
imshow("Histograma Contraste Automatico", histContAuto);
waitKey(0);
}

2
Centro de Enseñanza Técnica Industrial
Plantel Colomos
Ingeniería en Desarrollo de Software
Procesamiento de Imágenes

RESULTADOS
Agrega las imágenes indicadas en los espacios correspondientes.

Imagen original en escala de grises Histograma de intensidad de la imagen original


(imagen)

Imagen mejorada en escala de grises Histograma de intensidad de la imagen


mejorada (imagen)

3
Centro de Enseñanza Técnica Industrial
Plantel Colomos
Ingeniería en Desarrollo de Software
Procesamiento de Imágenes
CONCLUSIONES
Escribe tus observaciones y conclusiones.
La adaptación automática de contraste nos ayuda a mejorar una imagen de los tonos negros blancos y grises. Este
método encuentra un punto medio para desplazar los niveles de intensidad, dando un balance de grises en la
imagen.
Claramente pudimos observar el gran cambio que presenta esta fórmula, este desplaza hacia los extremos de los
negros y blancos, dando una distribución homogénea a la imagen.

También podría gustarte