5.1. Operaciones aritméticas 5.2. Operaciones lógicas

Preview:

Citation preview

5.1. Operaciones aritméticas 5.2. Operaciones lógicas

Suma

En su forma más sencilla, la operación suma toma como entrada dosimágenes de tamaño idéntico y produce como salida una terceraimagen del mismo tamaño de las primeras dos, en la cual cada valor depíxel es la suma de los valores de los píxel correspondientes de cadauna de las dos imágenes de entrada. Existen versiones más sofisticadasque permiten la combinación de más de dos imágenes con una únicaoperación. Una variante común permite adicionar una constanteespecifica a cada píxel. La adición de dos imágenes se lleva en un únicopaso. Los valores de los píxel del resultado vienen dados por:

Operaciones Aritméticas

O si solamente se desea adicionar un valor constante C a una imagen, entonces:

Si los valores de los píxel en las imágenes de entrada son realmente vectores en lugar devalores escalares (por ejemplo, imágenes a color) entonces los componentesindividuales (componentes rojo, azul y verde) se adicionan separadamente paraproducir el valor de salida.

Si el formato de la imagen que se esta utilizando soporta únicamente valores de píxel enteros de 8 bits, es bastante probable que el resultado de la adición sea mayor que el

máximo permitido por el valor del píxel. El efecto de ello, dependerá de la implementación. Los valores de píxel desbordados, deben tratarse de tal forma que se correspondan con los máximos valores permitidos. Si el formato de la imagen soporta

valores con un rango de valores mucho más grande, por ejemplo un entero de 32 bits o números de puntos flotantes, este problema no tiene tanta ocurrencia.

Resta

• En su forma más sencilla, la operación resta toma como entrada dosimágenes y produce como salida una tercera imagen en la cual cadavalor de píxel es la resta de los valores de los píxel de la primeraimagen menos sus correspondientes de la segunda imagen. Unavariante común permite simplemente una constante especificada sersustraída a cada píxel. Existen versiones que solamente producen ladiferencia absoluta entre valores de píxel, en lugar de una salidasignada. La sustracción de dos imágenes se lleva a cabo en un únicopaso. Los valores de los píxel del resultado vienen dados por:

O si la operación únicamente calcula las diferencias absolutas entre las dos imágenes de entrada:

O si solamente se desea sustraer un valor constante C a una imagen simple, entonces:

Si los valores de los píxel en las imágenes de entrada son realmente vectores en lugar devalores escalares (por ejemplo, imágenes a color) entonces los componentes individuales(componentes rojo, azul y verde) se sustraen separadamente para producir el valor desalida.

Multiplicación

Como sucede con otras operaciones aritméticas, la multiplicaciónpresenta dos formas principales. La primera forma toma dos imágenesde entrada y produce una imagen de salida en la cual los valores de lospíxeles son solo aquellos de la primera imagen multiplicados por losvalores correspondientes en la segunda imagen. La segunda formatoma una única imagen de entrada y produce un resultado en el cualcada valor de píxel es multiplicado por una constante, la cual debe serespecificada. Esta última forma es probablemente la más ampliamenteutilizada, en un proceso conocido como escalado. (Este escalado ennivel de grises, no debe confundirse con el escalado geométrico) Lamultiplicación de dos imágenes se desarrolla de la siguiente forma:

Luego, el escalado por una constante sigue la siguiente formulación matemática:

La constante en este caso, es a menudo un punto flotante, y puede ser menor que uno,en cuyo caso se reducirá la intensidad de la imagen. Este puede incluso ser negativo si elformato de la imagen lo soporta. Si los valores de píxel en las imágenes de entrada sonrealmente vectores en lugar de valores escalares (por ejemplo, imágenes a color)entonces los componentes individuales (componentes rojo, azul y verde) se multiplicanseparadamente para producir el valor de salida. Si los valores calculados son masgrandes que el máximo permitido por el valor del píxel, entonces deben ser truncados almáximo valor, o sufrir el mismo procedimiento ‘wrap’ antes descrito.

División

La operación de división de imágenes, toma normalmente dos imágenes como entraday produce una tercera cuyos valores de píxel son los valores de píxel de la primeraimagen dividido por los valores de píxel correspondientes de la segunda imagen.Muchas implementaciones pueden ser utilizadas con una única imagen de entrada, encuyo caso cada valor de píxel en la imagen se divide por una constante específica. Ladivisión de dos imágenes es desarrollada mediante la siguiente formulaciónmatemática:

Luego, la división por una constante se define de la siguiente manera:

Si los valores de los píxel en las imágenes de entrada son realmente vectores en lugar devalores escalares (por ejemplo, imágenes a color) entonces los componentes individuales(componentes rojo, azul y verde) se dividen separadamente para producir el valor desalida.

Operaciones lógicas

Operación AND

La operación AND toma dos imágenes binarias o en niveles de grises como entrada,produciendo una tercera imagen resultado, cuyos valores de píxel son los que seencuentren en la primera imagen, “Y” que se encuentren en la segunda en el píxelcorrespondiente. Una variación de esta operación toma únicamente una imagen yverifica la función AND con un valor constante específico, con lo cual se obtiene unresultado.La operación se desarrolla en un único paso. Es importante que todos los valorespíxel de entrada se operen teniendo el mismo número de bits. En aquellos valoresde píxel de la imagen de entrada que no son simples números binarios (1-bit), laoperación AND normalmente se desarrolla individualmente sobre cada bitcorrespondiente en los valores píxel.La aplicación más obvia de la operación AND es calcular la intersección de dosimágenes.

Operación OR

La operación OR (y de manera similar la NOR), toma dos imágenes binarias o enescalas de grises como entrada, y proporciona como resultado una tercera imagencuyos valores píxel de salida son los de la primera imágenes, “O” los píxelescorrespondientes de la segunda. Una variación de esta operación toma solamenteuna única imagen y desarrolla la operación OR de cada píxel con un valor específico.

La operación se desarrolla en un único paso. Es importante que todos los valorespíxel de entrada se operen teniendo el mismo número de bits. En aquellos valoresde píxel de la imagen de entrada que no son simples números binarios (1-bit), laoperación OR normalmente se desarrolla individualmente sobre cada bitcorrespondiente en los valores píxel.

Operación NOT

La operación lógica NOT, toma una imagen binaria o en escala de grises como entrada yproduce su negativo fotográfico, es decir, las áreas oscuras en la imagen de entrada sevuelven claras y viceversa. En otras palabras, mediante la aplicación de la operaciónNOT a una imagen binaria, se cambia su polaridad. La operación NOT puede serutilizada en imágenes en escalas de grises siendo almacenada en formato de píxel debyte aplicándole una operación a nivel de bits. El valor resultante para cada píxel es elvalor de entrada sustraído de 255, que es el valor máximo posible.

Algunas aplicaciones de la inversión soportan valores enteros (integer) o de punto flotante(float point). En este caso, no se puede utilizar la función lógica NOT, por lo tanto lovalores píxel de la imagen invertida vienen dados por:

Operaciones Bitwise

Esto incluye bitwise (AND, OR, NOT) y operaciones XOR. Serán muyútiles para extraer cualquier parte de la imagen (así como veremos enlos capítulos siguientes), definir y trabajar con un ROI no rectangular,etc. Abajo veremos un ejemplo de cómo cambiar una particular ROI.

Quiero colocar el logo de OpenCV sobre una imagen. Si agrego dosimágenes, cambiará de color. Si lo mezclo, obtengo un efecto detransparencia. Pero quiero que sea opaco. Si fuera una regiónrectangular podría usar ROI. Pero el logo de aprednderPython no esuna forma rectangular. Así que puedes hacerlo conoperaciones bitwise como se muestra a continuación:

Imagen 1 Imagen 2

resultado

Copiar una regiónEn ocasiones deseamos trabajar con una porción de la imagen original, en esos casos podemos usar el indexing de Numpy para seleccionar y copiar la región rectangular deseada, ejemplo:

Para indicar la región que seleccionaremos indicamos primero el valor de las coordenadas y0 y y1 luego x0 y x1 de este modo: img[y0:y1, x0:x1]

roi = image[240:375, 215:365]

Resultado

Bibliografía

• http://www.udb.edu.sv/udb/archivo/guia/biomedica-ingenieria/imagenes-medicas/2015/ii/guia-2.pdf

• http://acodigo.blogspot.com/2017/06/manipular-pixeles-opencv-python.html

• http://lavt-ecis.ucoz.com/ProcImagenes/TEORIA_PROCESAMIENTO_DE_IMAGENES_01.pdf

Recommended