Está en la página 1de 11

UNIVERSIDAD DE LA SIERRA JUREZ

Obtencin de los canales RGB (Red, Green, Blue) de una


imagen.
Licenciatura en informtica
Inteligencia artificial II

M.C. JASIEL HASSAN TOSCANO MARTNEZ


JORGE LUIS BAUTISTA REYES

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 1

Contenido

EXTRACCION DEL CANAL RGB EN UNA IMAGEN. ............................................................... 3


CODIGO COMPLETO. .................................................................................................................. 10

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 2

EXTRACCION DEL CANAL RGB EN UNA IMAGEN.

Las siguientes lnea de cdigo que se van a mostrar, la cual, cada lnea sirve para
completar el procedimiento de extraccin de los canales de los colores bsicos
RGB de una imagen.

1.- En este primer paso lo que haremos es declarar tres arreglos bidimensionales
de enteros, las cuales van a tener un tamao de 1000 x 1000, llamados rRed,
gGreen y bBlue en este caso, en estas variables almacenaremos los tres colores
bsicos de la imagen la cual sern extrados por los canales, mediante un
recorrido con ciclos for en la imagen.

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 3

2.- En el siguiente paso lo que haremos es declarar una variable de tipo string
llamado imagenSRC, a esta variable le vamos a asignar el nombre de la imagen,
la cual este va ser ledo como entrada desde consola.

3.- Cuando el nombre de la imagen es ledo desde la consola se lo pasamos a un


objeto de tipo Mat como se muestra a continuacin. Las variables imageCopiaRed,
es donde guardaremos lo que existe en el canal 2 de la imagen original.
imageCopiaGreen guardaremos lo que existe en el canal 1 de la imagen original y
finalmente imageCopiaBlue, aqu se van a almacenar lo que existe en el canal 0
de la imagen.

4.- Una vez declarados todas estas variables vamos a recorrer cada parte de la
imagen en dos ciclos for, la cual va ser renglones y columnas. En este recorrido lo
que estamos haciendo el extraer los colores bsicos de la imagen RGB. Cada
canal se recorre y esta informacin obtenida del canal se est guardando en los

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 4

arreglos bidimensionales que fueron declarados anteriormente, como se muestra


en la imagen sigueinte.

5.- Para dar salida en ventana lo que se obtuvo de los canales haremos lo
siguiente.

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 5

6.- En las instrucciones anteriores lo que se est haciendo es darle salida a los
resultados que se obtuvieron de los canales de imagen original. En estas ventanas
sacaremos 4 imgenes las cuales una de ellas es la original y las dems son
imgenes las cuales les fue asignado en valor que se obtuvo de los tres canales
de la imagen original.

Lenna imagen original:

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 6

Lenna imagen roja:

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 7

Lenna imagen verde:

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 8

Lenna imagen azul:

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 9

CODIGO COMPLETO.

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int rRed[1000][1000];
int gGreen[1000][1000];
int bBlue[1000][1000];
int main(int argc, char **argv)
{

string imagenSRC;
cout << "\n Nombre de la Imagen: ";
cin >> imagenSRC;

cv::Mat
cv::Mat
cv::Mat
cv::Mat
cv::Mat

imageOriginal=cv::imread(imagenSRC);
imageCopiaRed=cv::imread(imagenSRC);
imageCopiaGreen=cv::imread(imagenSRC);
imageCopiaBlue=cv::imread(imagenSRC);
imageCopia_Promediada=cv::imread(imagenSRC);

for(int i=0;i<imageOriginal.rows;i++){
for(int j=0;j<imageOriginal.cols;j++){
rRed[i][j]=imageOriginal.at<cv::Vec3b>(i,j)[0];
gGreen[i][j]=imageOriginal.at<cv::Vec3b>(i,j)[2];
bBlue[i][j]=imageOriginal.at<cv::Vec3b>(i,j)[1];
imageCopiaRed.at<cv::Vec3b>(i,j)[2]=rRed[i][j]; //rRed
imageCopiaRed.at<cv::Vec3b>(i,j)[0]=0; //bBlue
imageCopiaRed.at<cv::Vec3b>(i,j)[1]=0;//gGreen

imageCopiaGreen.at<cv::Vec3b>(i,j)[2]=0; //rRed
imageCopiaGreen.at<cv::Vec3b>(i,j)[0]=0; //bBlue
imageCopiaGreen.at<cv::Vec3b>(i,j)[1]=gGreen[i][j];//gGreen
imageCopiaBlue.at<cv::Vec3b>(i,j)[2]=0; //rRed
imageCopiaBlue.at<cv::Vec3b>(i,j)[0]=bBlue[i][j]; //bBlue
imageCopiaBlue.at<cv::Vec3b>(i,j)[1]=0;//gGreen

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 10

}
}
namedWindow(
namedWindow(
namedWindow(
namedWindow(
imshow(
imshow(
imshow(
imshow(

"Lenna
"Lenna
"Lenna
"Lenna

"Lenna
"Lenna
"Lenna
"Lenna

Original", CV_WINDOW_AUTOSIZE);
Red", CV_WINDOW_AUTOSIZE);
Green", CV_WINDOW_AUTOSIZE);
Blue", CV_WINDOW_AUTOSIZE);

Original", imageOriginal );
Red", imageCopiaRed );
Green", imageCopiaGreen );
Blue", imageCopiaBlue );

waitKey(0);return 0;
}

Jorge Luis Bautista Reyes

Inteligencia Artificial II

Pgina 11

También podría gustarte