เพื่อแสดงให้เห็นถึงวิธีการแก้ปัญหาการประมวลผลภาพ / แรสเตอร์ฉันเริ่มต้นด้วยภาพที่โพสต์ มันมีคุณภาพต่ำกว่าข้อมูลต้นฉบับมากเนื่องจากการซ้อนทับของจุดสีน้ำเงิน, เส้นสีเทา, พื้นที่สีและข้อความ และความหนาของเส้นสีแดงดั้งเดิม ดังนั้นมันจึงเป็นสิ่งที่ท้าทาย: อย่างไรก็ตามเรายังสามารถได้รับเซลล์ Voronoi ที่มีความแม่นยำสูง
ฉันแยกส่วนที่มองเห็นได้ของคุณสมบัติเชิงเส้นสีแดงโดยการลบสีเขียวออกจากช่องสีแดงจากนั้นทำการขยายและการลบส่วนที่สว่างที่สุดด้วยสามพิกเซล สิ่งนี้ถูกใช้เป็นฐานสำหรับการคำนวณระยะทางแบบยุคลิด:
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]]]
(รหัสทั้งหมดที่แสดงที่นี่คือMathematica 8)
การระบุ "สันเขา" ที่เห็นได้ชัด - ซึ่งจะต้องรวมทุกจุดที่แยกเซลล์ Voronoi สองเซลล์ที่อยู่ติดกัน - และรวมกันอีกครั้งกับเลเยอร์บรรทัดให้สิ่งที่เราต้องดำเนินการต่อไป:
ridges = Binarize[ColorNegate[
LaplacianGaussianFilter[DistanceTransform[ColorNegate[string]], 2] // ImageAdjust], .65];
ColorCombine[{ridges, string}]
แถบสีแดงแสดงถึงสิ่งที่ฉันสามารถบันทึกของเส้นและวงสีฟ้าแสดงสันเขาในการแปลงระยะทาง (ยังมีขยะจำนวนมากเนื่องจากตัวแบ่งในบรรทัดเดิม) สันเขาเหล่านี้จำเป็นต้องทำความสะอาดและปิดผ่านการขยายเพิ่มเติม - สองพิกเซลจะทำ - และจากนั้นเราสามารถระบุภูมิภาคที่เชื่อมต่อที่กำหนดโดย บรรทัดเดิมและสันเขาระหว่างพวกเขา (บางอันต้องมีการรวมกันใหม่อย่างชัดเจน):
Dilation[MorphologicalComponents[
ColorNegate[ImageAdd[ridges, Dilation[string, 2]]]] /. {2 -> 5, 8 -> 0, 4 -> 3} // Colorize, 2]
สิ่งนี้ประสบความสำเร็จเป็นผลคือการระบุคุณสมบัติเชิงเส้นห้าที่มุ่งเน้น เราสามารถเห็นคุณสมบัติเชิงเส้นสามแบบที่แยกออกมาจากจุดบรรจบกัน แต่ละอันมีสองด้าน ฉันได้พิจารณาด้านขวาของฟีเจอร์ขวาสุดทั้งสองว่าเหมือนกัน แต่มีความแตกต่างอย่างอื่นทุกอย่างให้ฟีเจอร์ทั้งห้า พื้นที่สีแสดงแผนภาพ Voronoi จากคุณสมบัติทั้งห้านี้
คำสั่งการจัดสรรแบบยุคลิดตามชั้นที่แยกความแตกต่างของคุณสมบัติเชิงเส้นทั้งสาม (ซึ่งฉันไม่ได้มีให้สำหรับภาพประกอบนี้) จะไม่แยกความแตกต่างด้านต่าง ๆ ของแต่ละคุณลักษณะเชิงเส้นดังนั้นมันจะรวมพื้นที่สีเขียวและสีส้มขนาบข้างซ้ายสุด ; มันจะแยกคุณสมบัติน้านขวาสุดออกเป็นสองส่วน และมันจะรวมชิ้นส่วนแยกเหล่านั้นเข้ากับคุณสมบัติสีเบจและสีม่วงแดงที่เกี่ยวข้องในด้านอื่น ๆ
เห็นได้ชัดว่าวิธีการแรสเตอร์นี้มีพลังในการสร้างการทดสอบ Voronoi ของคุณลักษณะที่กำหนดเอง - คะแนน, ชิ้นส่วนเชิงเส้น, และแม้กระทั่งรูปหลายเหลี่ยมโดยไม่คำนึงถึงรูปร่างของมัน - และมันสามารถแยกแยะลักษณะเชิงเส้นของลักษณะเชิงเส้น