Para ilustrar una solución de procesamiento de trama / imagen, comencé con la imagen publicada. Es de una calidad mucho menor que los datos originales, debido a la superposición de puntos azules, líneas grises, regiones coloreadas y texto; y el engrosamiento de las líneas rojas originales. Como tal, presenta un desafío: sin embargo, todavía podemos obtener células Voronoi con alta precisión.
Extraje las partes visibles de las características lineales rojas restando el verde del canal rojo y luego dilatando y erosionando las partes más brillantes en tres píxeles. Esto se utilizó como base para un cálculo de distancia euclidiana:
i = Import["http://i.stack.imgur.com/y8xlS.png"];
{r, g, b} = ColorSeparate[i];
string = With[{n = 3}, Erosion[Dilation[Binarize[ImageSubtract[r, g]], n], n]];
ReliefPlot[Reverse@ImageData@DistanceTransform[ColorNegate[string]]]
(Todo el código que se muestra aquí es Mathematica 8.)
Identificar las "crestas" evidentes, que deben incluir todos los puntos que separan dos celdas de Voronoi adyacentes, y volver a combinarlas con la capa de línea proporciona la mayor parte de lo que necesitamos para proceder:
ridges = Binarize[ColorNegate[
LaplacianGaussianFilter[DistanceTransform[ColorNegate[string]], 2] // ImageAdjust], .65];
ColorCombine[{ridges, string}]
La banda roja representa lo que pude salvar de la línea y la banda cian muestra las crestas en la transformación de distancia. (Todavía hay mucha basura debido a los cortes en la línea original). Estas crestas deben limpiarse y cerrarse mediante una dilatación adicional, dos píxeles funcionarán, y luego podemos identificar las regiones conectadas determinadas por Las líneas originales y las crestas entre ellas (algunas de las cuales necesitan ser recombinadas explícitamente):
Dilation[MorphologicalComponents[
ColorNegate[ImageAdd[ridges, Dilation[string, 2]]]] /. {2 -> 5, 8 -> 0, 4 -> 3} // Colorize, 2]
Lo que esto ha logrado, en efecto, es identificar cinco características lineales orientadas . Podemos ver tres características lineales separadas que emanan de un punto de confluencia. Cada uno tiene dos lados. He considerado que el lado derecho de las dos características más a la derecha es el mismo, pero por lo demás he distinguido todo lo demás, dando las cinco características. Las áreas coloreadas muestran el diagrama de Voronoi de estas cinco características.
Un comando de asignación euclidiana basado en una capa que distingue las tres entidades lineales (que no tenía disponibles para esta ilustración) no distinguiría los diferentes lados de cada entidad lineal y, por lo tanto, combinaría las regiones verde y naranja que flanquean la línea más a la izquierda ; dividiría la característica verde azulado más a la derecha en dos; y combinaría esas piezas divididas con las características beige y magenta correspondientes en sus otros lados.
Evidentemente, este enfoque de trama tiene el poder de construir teselaciones Voronoi de características arbitrarias (puntos, piezas lineales e incluso polígonos, independientemente de sus formas) y puede distinguir lados de características lineales.