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

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

Upload: others

Post on 01-Aug-2022

23 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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

Page 2: 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

Page 3: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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.

Page 4: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas
Page 5: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas
Page 6: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas
Page 7: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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:

Page 8: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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.

Page 9: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas
Page 10: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas
Page 11: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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:

Page 12: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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.

Page 13: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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:

Page 14: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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.

Page 15: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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.

Page 16: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas
Page 17: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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.

Page 18: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas
Page 19: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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.

Page 20: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas
Page 21: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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:

Page 22: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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:

Page 23: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas
Page 24: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

Imagen 1 Imagen 2

resultado

Page 25: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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]

Page 26: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

Resultado

Page 27: 5.1. Operaciones aritméticas 5.2. Operaciones lógicas

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