Bir raster / görüntü işleme çözümü göstermek için , yayınlanan görüntü ile başladım. Mavi noktaların, gri çizgilerin, renkli bölgelerin ve metnin üst üste bindirilmesinden dolayı orijinal verilerden çok daha düşük kalitededir; ve orijinal kırmızı çizgilerin kalınlaşması. Bu nedenle bir zorluk teşkil etmektedir: Bununla birlikte, Voronoi hücrelerini hala yüksek hassasiyetle elde edebiliyoruz.
Yeşili kırmızı kanaldan çıkararak ve sonra en parlak kısımları üç piksel genişleterek aşındırarak kırmızı doğrusal özelliklerin görünür kısımlarını çıkarttım. Bu, Öklid mesafesinin hesaplanmasında temel olarak kullanılmıştır:
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]]]
(Burada gösterilen tüm kodlar Mathematica 8'dir.)
İki bitişik Voronoi hücresini ayıran tüm noktaları içermesi gereken açık "sırtları" belirlemek ve bunları çizgi katmanıyla yeniden birleştirmek, devam etmek için gerekenlerin çoğunu sağlar:
ridges = Binarize[ColorNegate[
LaplacianGaussianFilter[DistanceTransform[ColorNegate[string]], 2] // ImageAdjust], .65];
ColorCombine[{ridges, string}]
Kırmızı bant çizgiden ne kurtarabileceğimi ve camgöbeği bant mesafe dönüşümündeki çıkıntıları gösterir. (Orijinal çizgideki kopukluklardan dolayı hala çok fazla hurda var.) Bu sırtların daha fazla genişlemesi ile temizlenmesi ve kapatılması gerekiyor - iki piksel yapacaktır - ve ardından belirlediğimiz bağlı bölgeleri belirleyebiliriz orijinal çizgiler ve aralarındaki çıkıntılar (bazıları rekombine açıkça ihtiyaç duyulan):
Dilation[MorphologicalComponents[
ColorNegate[ImageAdd[ridges, Dilation[string, 2]]]] /. {2 -> 5, 8 -> 0, 4 -> 3} // Colorize, 2]
Bunun başardığı şey, aslında, beş odaklı doğrusal özellik tanımlamaktır . Bir birleşme noktasından çıkan üç ayrı doğrusal özellik görüyoruz. Her birinin iki tarafı vardır. En sağdaki iki özelliğin sağ tarafının aynı olduğunu düşündüm, ancak beş özelliği vererek başka her şeyi ayırt ettim. Renkli alanlar Voronoi şemasını bu beş özellikten göstermektedir.
Üç doğrusal özelliği (bu gösterim için elimde olmayan) ayıran bir katmana dayanan bir Öklid Tahsisi komutu , her bir lineer özelliğin farklı yanlarını ayırt etmeyecek ve böylece en soldaki çizgiyi çevreleyen yeşil ve turuncu bölgeleri birleştirecektir. ; en sağdaki teal özelliğini ikiye böler; ve bu ayrık parçaları diğer yanlarındaki bej ve macenta özellikleriyle birleştirirdi.
Açıkça görüldüğü üzere, bu raster yaklaşım, Voronoi'nin keyfi özelliklerinin - noktalarının, doğrusal parçaların ve hatta çokgenlerin, şekillerinden bağımsız olarak - keyfi şekillendirme - ve doğrusal özelliklerin yanlarını ayırt edebilir - yapma gücüne sahiptir.