Documentos de Académico
Documentos de Profesional
Documentos de Cultura
290535
Ramos Juárez.
TAREA 1
Comparación entre dos imágenes.
FECHA 28/02/2023
OBJETIVOS.
• Abrir y comparar el contenido pixel a pixel de dos imágenes, y verificar si existen diferencias.
De hallarlas, genere una tercera imagen donde las diferencias serán resaltadas usando el filtro
negativo (el resto de la imagen se mantiene sin cambios).
MARCO TEÓRICO.
A continuación se definirán algunos conceptos importantes para poder comprender de mejor manera
el ejercicio:
Mapa de bits.
Un Bitmap es un modo elemental para representar imágenes digitales como información en el
hardware, específicamente la memoria, de un computador. Consiste, básicamente, en formar arreglos
de elementos (vectores, matrices, tensores) ordenados de modos específicos. En general, para el caso
típico de imágenes 2D, se realiza un ordenamiento por filas de elementos de matriz (pixels)
asignando a cada uno un valor que determina “el color” en esa posición de la imagen.
En el caso de imágenes en tonalidades de grises, el valor del elemento de matriz es un escalar;
mientras que para el caso de imágenes a color el valor de cada elemento de matriz es un vector de
tres coordenadas, cada una de las cuales especifica “el grado de influencia” de los colores rojo (Red
“R”), verde (Green “G”) y azul (Blue “B”), de modo que se denomina representación RGB). Existen
otros modos de representación a color, como por ejemplo CMYK (cián, magenta, amarillo y negro).
El uso típico de 8-bits está basado, principalmente, en dos motivos. En primer lugar, estudios
biométricos muestran que el ojo humano no es suficientemente sensible para diferenciar más de 256
niveles de intensidad para un dado color. Además, el rango de valores para los elementos de matriz
determinan las necesidad en cuanto a la capacidad de almacenamiento en el computador.
Entonces, para imágenes en tonalidades de grises, conocidas como “de una banda” el rango para los
valores de los elementos de matriz (escalares) es [0,255], mientras que para imágenes a color, los
valores de elementos de matriz (vectores de 3 coordenadas) asumen valores en
([0,255],[0,255],[0,255]). Sin embargo, también es frecuente encontrar representaciones
normalizadas para imágenes a color, es decir, elementos de matriz en ([0,1],[0,1],[0,1]) para
determinar los colores RGB.
Todos los colores en el rango visible pueden representarse como combinaciones RGB, variando
desde el negro (0,0,0) al blanco (255,255,255). Por lo tanto, una imagen RGB es representada por
un arreglo bidimensional de pixels, cada uno codificado en 3 bytes pudiendo asumir 2563 diferentes
valores de combinaciones vectoriales, es decir 16.8 millones de diferentes colores,
aproximadamente.
Inversión de color.
Se plantea como base una imagen como un mapa de bits en escala de grises, aunque esto puede ser
llevado a imágenes a color en cualquier formato, dado que la escala de grises sen encuentra en un
intervalo de valores de 0 a 255 se realiza la inversión de forma algebraica como la resta del valor
máximo menos el valor del pixel, trabajando de esta manera pixel a pixel, como si fuese una matriz
moviéndose pixel a pixel, realizándose de la siguiente manera:
𝐼𝑛𝑣 = 𝑉𝑀á𝑥 − 𝑉𝐴𝑐𝑡
METODOLOGÍA.
Realizar una serie de comparaciones entre pares de imágenes en formato RGB y escala de grises.
Localizar e identificar las potenciales diferencias entre dos imágenes y generar una tercera imagen
a partir de la comparación entre esas imágenes.
Pseudocódigo.
INICIO
Declarar las dos imágenes a trabajar img1, img2,img
Desde i=1 hasta i=20 repetir
Desde j=1 hasta j=20 repetir
SI(img1[i][j]!=img2[i][j])
Img3[i][j]=255-img1[i][j]
Abrir las 3 imágenes para ver las diferencias invertidas en la tercer imagen.
Esperar una tecla cualquiera.
FIN
Diagrama de flujo
Código.
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
int main()
{
Mat src = imread("C:/Users/ale_r/Documents/8vo semestre/Visión por
computadora/img1.pgm", IMREAD_UNCHANGED);
Mat src1 = imread("C:/Users/ale_r/Documents/8vo semestre/Visión por
computadora/img2.pgm", IMREAD_UNCHANGED);
Mat inv = imread("C:/Users/ale_r/Documents/8vo semestre/Visión por
computadora/img2.pgm", IMREAD_UNCHANGED);
cout<<src.rows<<endl;
cout<<src.cols<<endl;
cout<<src1.rows<<endl;
cout<<src1.cols<<endl;
cout<<inv.rows<<endl;
cout<<inv.cols<<endl;
waitKey();return 0;
}
RESULTADOS.
8
CONCLUSIONES.
En esta práctica se lleva acabo el proceso de la inversión de color de algunas partes o matrices,
trabajar las imágenes en escala de grises en forma de matriz, para asi poder modificar, partes
específicas, asi como crear una imagen en escalas de grises para poder resaltar algunas partes
comparadas con otras partes de la misma imagen o diferente.
Se logro concretar con éxito y de forma satisfactoria el objetivo de la practica, donde en los
resultados se puede apreciar la imagen final, como es invertida pixel por pixel donde la condición
de que ambas imágenes sean diferentes.