Amo a la IA de Pinterest, siempre me da buenas sorpresas. En general es siempre agradable que alguien entienda muy bien tus gustos, incluso cuando es una maquina quien lo hace. Mi ultimo descubrimiento tiene que ver con ofanimes y querubines. A partir de una fotografía de una representación de un ángel apegada la descripción del pasaje de Ezequiel 1:19, di con un foro ruso de arte ortodoxo que me llevó a una página de
conservación de patrimonio cultural serbio donde hallé las joyas que aquí comparto.
Estas imágenes son del monasterio de Gračanica (Kosovo) y de la iglesia de San Jorge en Prizren (Serbia). El resto de las fotografías pueden encontrarlo aquí y acá.
Mostrando entradas con la etiqueta Arte. Mostrar todas las entradas
Mostrando entradas con la etiqueta Arte. Mostrar todas las entradas
domingo, 4 de julio de 2021
Ángeles
jueves, 18 de junio de 2020
viernes, 19 de abril de 2019
Fenestra Coeli Apertae
Johann Jakob Scheuchzer. Fenestra Coeli Apertae (The Windows of Heaven were Opened), Physica Sacra. 1731.
martes, 27 de junio de 2017
Segmentación de imágenes por umbral con scikit-image
Segmentar una imagen a través de umbrales es probablemente la forma más sencilla de identificar regiones de interés en una imagen. Esto hace que este método sea vulnerable a ruido, sombras y otros factores más a la hora de utilizarlo en la práctica. Sin embargo es una forma sencilla de introducir a las funciones de segmentación del módulo scikit-image. Primero, para este ejemplo tomaremos la siguiente pintura de Kazimir Malevich:
Separaremos la imagen en secciones para las cuales obtendremos un array con los índices de cada pixel para cada una de ellas. Para ello cargamos primero la imagen:
#Cargar imagen
im = skimage.io.imread("malevich-map-style.png")
imGS = skimage.color.rgb2gray(im) #Escala de grises
y creamos una imagen binarizada a partir de un umbral en la imagen en escala de grises:
#Umbral
thresh = 0.7
bw = binary_erosion(closing(imGS < thresh, np.ones((3,3))))
La variable bw es la imagen binarizada corregida y es obtenida aplicando la función closing seguida de binary_erosion (ambas contenidas en skimage.morphology). Closing() realiza una operación de dilatación seguida de una erosión, lo que permite cerrar "agujeros" oscuros en una imagen. El primer argumento que toma en este ejemplo es la imagen binarizada resultante de aplicar el umbral imGS < 0.7 y el segundo es una matriz que determina el tamaño de la dilatación/erosión. Binary_erosion es solo una operación de erosión que elimina las falsas regiones debidas a las zonas brillantes del fondo. Teniendo la imagen binarizada limpia, obtenermos los segmentos:
#Segmentación
labeled_im = skimage.measure.label(bw)
lab_img = label2rgb(labeled_im, image=imGS,bg_label=0)
dónde labeled_im es una nueva imagen obtenida con la función label()en dónde cada pixel de la imagen en escala de grises original esta clasificado con su número de región . Si esto no es muy claro, pueden visualizar este arreglo de datos con el explorador de variables de Spyder dando doble click en el nombre de la variable:
La imagen lab_img es una visualización gráfica de las etiquetas de región sobre la imagen original que al mostrarla con Matplotlib y utilizando la función plt.text() junto con los datos contenidos en labeled_im, el resultado final es el siguiente:
Código completo:
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 27 13:27:53 2017
@author: rodolfo
"""
import numpy as np
from matplotlib import pyplot as plt
import skimage
from skimage.morphology import closing, binary_erosion
from skimage.color import label2rgb
#Cargar imagen
im = skimage.io.imread("malevich-map-style.png")
imR = im[:,:,0]
imG = im[:,:,1]
imB = im[:,:,2]
imGS = skimage.color.rgb2gray(im)
#Umbral
thresh = 0.7
bw = binary_erosion(closing(imGS < thresh, np.ones((3,3))))
#Segmentación
labeled_im = skimage.measure.label(bw)
lab_img = label2rgb(labeled_im, image=imGS,bg_label=0)
#Array de arrays de indices por segmento
reg_index = []
for i in range(0, np.max(labeled_im)):
u = np.where(labeled_im == i)
reg_index.append(zip(u[0],u[1]))
#Plots
R = []
cr = []
for i in range(0,np.max(labeled_im)):
R.append(np.where(labeled_im==i+1))
cr.append((np.mean(R[i][0]),np.mean(R[i][1])))
plt.figure(1)
plt.imshow(im)
plt.figure(2)
plt.imshow(lab_img)
for i in range(0,np.max(labeled_im)):
plt.text(cr[i][1],cr[i][0],str(i+1),color='w')
Separaremos la imagen en secciones para las cuales obtendremos un array con los índices de cada pixel para cada una de ellas. Para ello cargamos primero la imagen:
#Cargar imagen
im = skimage.io.imread("malevich-map-style.png")
imGS = skimage.color.rgb2gray(im) #Escala de grises
y creamos una imagen binarizada a partir de un umbral en la imagen en escala de grises:
#Umbral
thresh = 0.7
bw = binary_erosion(closing(imGS < thresh, np.ones((3,3))))
La variable bw es la imagen binarizada corregida y es obtenida aplicando la función closing seguida de binary_erosion (ambas contenidas en skimage.morphology). Closing() realiza una operación de dilatación seguida de una erosión, lo que permite cerrar "agujeros" oscuros en una imagen. El primer argumento que toma en este ejemplo es la imagen binarizada resultante de aplicar el umbral imGS < 0.7 y el segundo es una matriz que determina el tamaño de la dilatación/erosión. Binary_erosion es solo una operación de erosión que elimina las falsas regiones debidas a las zonas brillantes del fondo. Teniendo la imagen binarizada limpia, obtenermos los segmentos:
#Segmentación
labeled_im = skimage.measure.label(bw)
lab_img = label2rgb(labeled_im, image=imGS,bg_label=0)
dónde labeled_im es una nueva imagen obtenida con la función label()en dónde cada pixel de la imagen en escala de grises original esta clasificado con su número de región . Si esto no es muy claro, pueden visualizar este arreglo de datos con el explorador de variables de Spyder dando doble click en el nombre de la variable:
La imagen lab_img es una visualización gráfica de las etiquetas de región sobre la imagen original que al mostrarla con Matplotlib y utilizando la función plt.text() junto con los datos contenidos en labeled_im, el resultado final es el siguiente:
Código completo:
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 27 13:27:53 2017
@author: rodolfo
"""
import numpy as np
from matplotlib import pyplot as plt
import skimage
from skimage.morphology import closing, binary_erosion
from skimage.color import label2rgb
#Cargar imagen
im = skimage.io.imread("malevich-map-style.png")
imR = im[:,:,0]
imG = im[:,:,1]
imB = im[:,:,2]
imGS = skimage.color.rgb2gray(im)
#Umbral
thresh = 0.7
bw = binary_erosion(closing(imGS < thresh, np.ones((3,3))))
#Segmentación
labeled_im = skimage.measure.label(bw)
lab_img = label2rgb(labeled_im, image=imGS,bg_label=0)
#Array de arrays de indices por segmento
reg_index = []
for i in range(0, np.max(labeled_im)):
u = np.where(labeled_im == i)
reg_index.append(zip(u[0],u[1]))
#Plots
R = []
cr = []
for i in range(0,np.max(labeled_im)):
R.append(np.where(labeled_im==i+1))
cr.append((np.mean(R[i][0]),np.mean(R[i][1])))
plt.figure(1)
plt.imshow(im)
plt.figure(2)
plt.imshow(lab_img)
for i in range(0,np.max(labeled_im)):
plt.text(cr[i][1],cr[i][0],str(i+1),color='w')
viernes, 14 de abril de 2017
Listas de interes
Hoy en el foro de soporte de Facebook confirmé mis sospechas: eliminaron las listas de interés desde noviembre del año pasado. Por suerte había guardado los enlaces a mis listas por lo que aún puedo verlas, pero ya no se tiene la opción de crear más. Ok, sé que no era de las opciones más populares y de no ser por las protestas en el foro seguiría creyendo que era el único que las utilizaba, pero eran una herramienta muy útil para organizar los likes y también para evitar cerrarse en nuestras burbujas de gustos (gracias al machine learning que le da prioridad de aparición a lo que más se ajusta a nuestros gustos). Una de mis listas más útiles recopila más de 80 fanpages de centros culturales en la ciudad de Puebla (si no la borran en el futuro, pueden verla aquí). Mi lista favorita, y arma secreta para cazar convocatorias de escuelas de verano, estancias de investigación, etc, tiene más de 100 fanpages de centros de investigación, universidades y programas de vinculación en México y unos cuantos en el extranjero. Si no la eliminan, lo que espero jamás pase, pueden seguirla aquí. Es una lastima que hayan quitado una de la herramientas que más me han servido para vivir el arte y la ciencia en el mundo real.
sábado, 14 de mayo de 2016
Duloxetina
![]() |
A Quay at Caen - Stanislas Lépine |
![]() |
Atkinson Grimshaw |
viernes, 1 de febrero de 2013
martes, 11 de diciembre de 2012
Nubes
Un artista neerlandés llamado Berndnaut Smilde ha descubierto la manera de crear una
nube en el centro de una habitación mediante
regulación de humedad, temperatura y luz. Una vez que las
condiciones son perfectas, utiliza una máquina de humo para crear la
nube.
sábado, 28 de mayo de 2011
...
Es triste que haya tenido que morir Leonora Carrigton para descubrirla en la televisión abierta nacional.
sábado, 5 de septiembre de 2009
miércoles, 25 de febrero de 2009
Venus In Furs - The Velvet Underground (Exploding Plastic Inevitable)
En YouTube de repente te encuentras con una que otra joyita audio-visual. Exploding Plastic Inevitable fue un espectáculo multimedia promovido por el artista Andy Warhol en abril de 1966 realizado en la sala de baile The Dom de Nueva York. Por supuesto, La Velvet puso la música en vivo.
jueves, 27 de noviembre de 2008
José Arturo Hinojos, la mente creativa de Blueshit también pinta. Y pinta chingón.
TITULO: INTOLERANTES CAPACES DE SU DIVINA PRESION
TITULO: INTOLERANTES CAPACES DE SU DIVINA PRESION
Suscribirse a:
Entradas (Atom)