Sunteți pe pagina 1din 4

Universidad Autónoma de San Luis Potosí

Facultad de Ingeniería

Práctica No. 13 y 14
“MODELOS DE COLOR Y EVENTOS DEL “MOUSE” EN OPENCV(DEM)”
“SEGMENTACIÓN A COLOR”

Laboratorio de Tratamiento de Imágenes.


Área Mecánica y Eléctrica
Facultad de Ingeniería, UASLP

Alumno: Sergio Iván Barbosa Pérez.

Instructor: David García Cuestas.

Fecha: 09/Septiembre/19
1. Objetivos.
Que el alumno realice programas que conviertan una imagen en diferentes modelos de color. Además que
utilice los eventos del “mouse” que ofrece OpenCV.
Que el alumno realice un programa en OpenCV que dé segmentación a color, utilizando eventos del
“mouse”.

2. Desarrollo.
El código 1 se encarga de convertir la imagen BGR a HSI mediante un método matemático ubicado en el
anexo de la practica en el manual.
Se recorre todos los pixeles y se les hace la conversión a HSI dando como resultado una imagen rojiza.

Código 1
#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include "opencv2/imgproc/imgproc.hpp"
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#define pi 3.14159265 // Se declara pi
using namespace cv;
using namespace std;
int main( ){
Mat imBGR; //DECLARAR: nueva imagen vacía
imBGR = imread("test.jpg"); //INICIAR: leer imagen Color
namedWindow( "Ventana: Imagen BGR", CV_WINDOW_AUTOSIZE ); //crea ventana llamada "Ventana:
Imagen1"
imshow( "Ventana: Imagen BGR", imBGR );
int re,nR = imBGR.rows; //numero de renglones (alto)
int co,nC = imBGR.cols; //numero de columnas (ancho)
Mat imHSI; // Imagen en donde se guardara el resultado
imHSI.create(imBGR.rows,imBGR.cols,CV_8UC3); // Se adecua a las filas y columnas con
formato uchar de 3 canales
float b,g,r; // Auxiliares
float h,s,i;

1/1
Práctica No. XX:Titulo de la practica
Universidad Autónoma de San Luis Potosí

Facultad de Ingeniería

for(re=0; re<nR; re++) // Recorrido de la imagen


{
Vec3b *src = imBGR.ptr<Vec3b>(re); // Se usan punteros tipo Vec3b para acceder a las
componentes RGB
Vec3b *dst = imHSI.ptr<Vec3b>(re); // Se usan punteros tipo Vec3b para guardar las
componentes HSI
for(co=0; co<nC; co++){
b = src[co][0] / 255.0; // Se normalizan las componentes RGB
g = src[co][1] / 255.0;
r = src[co][2] / 255.0;
float num=(float)(0.5*((r-g)+(r-b))); // Inicio de formula del anexo
float den=(float)sqrt((r-g)*(r-g)+(r-b)*(g-b));
if (den == 0)
h=0;
else
{
double theta=acos(num/den);
if(b<=g)
h=theta/(pi*2);
else
h=(2*pi-theta)/(2*pi);
}
double minBGR=min(r,min(g,b));
den = r+g+b;
if(den == 0)
s=0;
else
s=1-3*minBGR/den;
i=den/3.0; // Fin de formula del anexo
// Como los valores estan en el rango de 0-1 se deben convertir
dst[co][0] = h * 255; // Se guardan los valores HSI en la imagen final
dst[co][1] = s * 255;
dst[co][2]= i * 255;
}
}
namedWindow( "Ventana: Imagen HSI", CV_WINDOW_AUTOSIZE );
imshow( "Ventana: Imagen HSI", imHSI ); // Se muestra el resultado de
conversión HSI
imwrite("test1.jpg", imHSI);
cvtColor(imHSI,imBGR, CV_HSV2RGB_FULL); // Se hace una conversión a HSV para
comparar el resultado
namedWindow( "Ventana: Imagen BGR2", CV_WINDOW_AUTOSIZE );
imshow( "Ventana: Imagen BGR2", imBGR ); // Se muestra el resultado de
conversión HSV a RGB
waitKey(0); // espera a presionar una tecla con la ventana activa
imHSI.release();
imBGR.release();
destroyAllWindows();
return 0;
}

2/1
Práctica No. XX:Titulo de la practica
Universidad Autónoma de San Luis Potosí

Facultad de Ingeniería

Figura 1 Imagen original

Figura 2 Imagen HSI

Figura 3 Imagen HSI a RGB de HSV

3. Comprensión.
1. ¿Qué es un modelo de color?
Un modelo de colores es un modelo matemático abstracto que permite representar los colores en forma
numérica, utilizando típicamente tres o cuatro valores o componentes cromáticos. Es decir, un modelo de
colores sirve en una aplicación que asocia a un vector numérico un elemento en un espacio de color.

2. Mencione al menos 3 modelos de color diferentes y una aplicación para cada uno de ellos
RGB – Se usa para cualquier diseño digital.
HSI – Se usa para asignar falsos colores a objetos en imágenes digitales.
CMYK – Se usa para diseños impresos.

3. Defina cada una de las componentes del modelo HSI


H – Modelo matiz
S – Saturación
I - Intensidad

3/1
Práctica No. XX:Titulo de la practica
Universidad Autónoma de San Luis Potosí

Facultad de Ingeniería

4. Conclusiones.
Es muy importante el fijarse en pequeños detalles tales como usar punteros para acceder a los canales BGR
de una imagen para tener mayor confiabilidad en que los datos se acceden y almacenan de una manera
correcta.
Va a ser muy útil el poder usar los comandos de acción del mouse para múltiples aplicaciones futuras, así
como un posible uso para el proyecto integrador.

4/1
Práctica No. XX:Titulo de la practica

S-ar putea să vă placă și