Codebox: crea filtros de imagen con multiplicación de matriz - 💡 Fix My Ideas

Codebox: crea filtros de imagen con multiplicación de matriz

Codebox: crea filtros de imagen con multiplicación de matriz


Autor: Ethan Holmes, 2019

Los filtros de color le permiten alterar una imagen ... bueno ... filtrando los colores de una imagen. Mientras que Processing tiene algunos filtros incorporados, a menudo es útil poder crear sus propios filtros personalizados. Por ejemplo, la comparación de métodos de Anaglyph del sitio detalla una serie de filtros diferentes que son útiles para crear imágenes en 3D.

Como verá en el sitio, los filtros son básicamente transformaciones matemáticas que se aplican a los componentes rojo, verde y azul de los píxeles de una imagen. Para crear un filtro como los del sitio de anaglíficos estéreo, debemos extraer cada píxel de la imagen original, aplicar una operación de matriz a sus componentes de color y luego usar este nuevo valor en el píxel correspondiente de la nueva imagen. Este Codebox le muestra cómo crear sus propios filtros como estos.

Primero, sin embargo, un poco de revisión para las matemáticas (potencialmente) de apariencia peluda. Una matriz es una matriz bidimensional de números llamados elementos. Las matrices se usan en muchas aplicaciones diferentes, que representan conjuntos de ecuaciones, transformaciones a objetos 3D y filtros de color (como en este ejemplo).

Una matriz se caracteriza generalmente por sus dimensiones: el número de elementos en sus filas (los números que cruzan) y las columnas (los números que van hacia arriba y hacia abajo). Por convención, el número de filas siempre viene primero. La siguiente figura muestra 2 matrices. A la izquierda hay una matriz de 2 filas por 3, que generalmente se denomina matriz de 2 × 3. A la derecha hay una matriz de 3 filas por 2 columnas, también llamada matriz 3 × 2:

Para multiplicar dos matrices juntas (llamémoslas matriz A y matriz B), el número de columnas en la matriz A debe ser igual al número de filas en la matriz B. Esto es crítico: si esto no es cierto, entonces la multiplicación no está definida . (Esto es como dividir por cero, es simplemente imposible).

Suponiendo que se cumpla este criterio, el producto de las dos matrices (llamémoslo matriz C) tendrá el mismo número de filas que la matriz A y el mismo número de columnas que la matriz B. Los elementos de la matriz C son iguales a la suma de los productos del elemento de la columna correspondiente en A multiplican los elementos de la fila en B. Esto es un poco complicado, pero la siguiente figura debería (¡ojalá!) aclararlo un poco:

El siguiente boceto, matrix_mult.pde, ilustra cómo realizar la operación en Procesamiento:

Cuando ejecute el croquis, debería ver el siguiente resultado:

[0][0] = 2.0 [0][1] = 0.0 [1][0] = 5.5 [1][1] = 2.0

Así que, con las matemáticas básicas fuera del camino, estamos listos para escribir el código del filtro. El resto de las arrugas es que las imágenes en Procesamiento se mantienen en matrices unidimensionales de colores, en lugar de matrices bidimensionales de coordenadas (x, y), como se explica en este gran tutorial de Imágenes y píxeles de Daniel Shiffman. En el tutorial, da una buena fórmula que puedes usar para asignar una coordenada (x, y) a la posición en la matriz de la imagen:

posición en la matriz = x + IMAGE_WIDTH * y

La siguiente figura debería ayudar a ilustrar la mayoría de los conceptos en funcionamiento aquí:

Sin más preámbulos, aquí hay un boceto llamado filter.pde para implementar el filtro a través de la multiplicación de matrices:

Más: Echa un vistazo a todas las columnas de Codebox aquí

En el cobertizo del fabricante:


Comenzando con el procesamiento Aprenda a programar computadoras de manera fácil con Processing, un lenguaje simple que le permite usar código para crear dibujos, animaciones y gráficos interactivos. Los cursos de programación generalmente comienzan con la teoría, pero este libro te permite saltar directamente a proyectos creativos y divertidos. Es ideal para cualquier persona que quiera aprender programación básica y sirve como una simple introducción a los gráficos para personas con algunas habilidades de programación.



Puede Que Le Interesen

Una mirada más cercana - Craft-Tea Tea Cozy

Una mirada más cercana - Craft-Tea Tea Cozy


CÓMO geotagg del.icio.us marcadores

CÓMO geotagg del.icio.us marcadores


Boulder Mini Maker Faire: ¡Pinball de boj, kitables, robótica modular y más!

Boulder Mini Maker Faire: ¡Pinball de boj, kitables, robótica modular y más!


¡Diseñe para IoT, gane un viaje a Maker Faire Bay Area IRL!

¡Diseñe para IoT, gane un viaje a Maker Faire Bay Area IRL!