การรับรู้ทางน้ำในภาพถ่ายทางอากาศ - รูปหลายเหลี่ยมจากภาพการตรวจจับขอบ


9

ฉันกำลังพยายามจดจำเส้นทางน้ำจากภาพถ่ายทางอากาศ (พูดจาก Google Maps) รัฐบาลท้องถิ่นมักจะมีข้อมูล GIS ที่บอกว่าทางน้ำ (และถนนอาคาร ฯลฯ ) อยู่ที่ไหน แต่ข้อมูลน้ำในนั้นมักจะไม่ถูกต้องบ้างและเราอาจปรับปรุงให้ดีขึ้นโดยใช้ภาพถ่ายทางอากาศ ดังนั้นเราจึงมีข้อมูลบางอย่างที่ไม่น่าเชื่อถือเสมอไป

ฉันรู้วิธีการประมวลผลข้อมูลภาพขั้นพื้นฐาน (น่าเสียดายที่ฉันยังไม่มีภาพตัวอย่างที่จะแสดงที่นี่ฉันพยายามจินตนาการว่าฉันสามารถทำสิ่งนี้ได้อย่างไรไม่มีรหัสที่ใช้งานได้):

  • ฉันสามารถรวบรวมชุดสีบางค่าโดยใช้บิตของทางน้ำในภาพและคิดว่าพิกเซลใดที่อยู่ใกล้กับสีเหล่านี้มากที่สุดอาจใช้กับฟีเจอร์ประเภทอื่นเช่นหญ้าถนนอาคาร ฯลฯ หากฉันตั้งค่าขีด จำกัด ว่าพิกเซลใดที่ "ใกล้พอ" ฉันจะได้รับพิกเซลจำนวนหนึ่งซึ่งอาจเป็นทางน้ำ (แต่จะมีเสียงรบกวนมาก)

  • ฉันสามารถเปลี่ยนภาพให้เป็นโทนสีเทาและใช้อัลกอริธึมการตรวจจับขอบมาตรฐานเพื่อหาว่าขอบอยู่ที่ไหน อีกครั้งสิ่งนี้ทำให้ฉันมีพิกเซลเหมือนขอบเขต แต่จะมีจุดรบกวนและขอบจะคิดเกินไปและ / หรือมีช่องว่าง

สิ่งที่ฉันต้องการเป็นผลลัพธ์คือชุดของรูปหลายเหลี่ยมที่แสดงถึงเส้นทางน้ำที่เป็นไปได้

ฉันต้องการใช้ขอบที่ตรวจพบเพื่อสร้างรูปหลายเหลี่ยมและข้อมูลสีเพื่อตัดสินใจว่าส่วนใดของน้ำซึ่งอาจใช้ประโยชน์จากข้อมูลรัฐบาลที่เรามีอยู่แล้ว

มีวิธีทราบจากผลลัพธ์ของอัลกอริธึมการตรวจจับขอบไปจนถึงชุดรูปหลายเหลี่ยมปิดที่ดีหรือไม่? หรือเคล็ดลับอื่น ๆ เกี่ยวกับวิธีการแก้ไขปัญหานี้หากมีวิธีที่ดีกว่า


1
Sidenote: โปรดทราบว่าสิทธิ์การใช้งาน Google ไม่ได้รับอนุญาตให้ทำเช่นนี้! OpenStreetMap มีปัญหาเดียวกัน OSM มีข้อตกลงในการใช้รูปภาพ Bing
PiTheNumber

คำตอบ:


6

นี่เป็นเรื่องยากที่จะทำกับข้อมูลสีเพียงอย่างเดียว การแปรผันของสีระหว่างภาพทางอากาศ (หรือแม้กระทั่งภายใน) และภาพถ่ายดาวเทียมอาจมีขนาดใหญ่มาก เป็นการดีที่คุณจะต้องการ hyperspectral หรือภาพอินฟราเรดอย่างน้อย ( ดูเอกสารนี้ )

สมมติว่าการตรวจจับขอบของคุณสามารถจัดชิดขอบพิกเซลคุณสามารถใช้เส้นขอบของแต่ละพิกเซลเป็นรูปหลายเหลี่ยมปิดและรวมเข้าด้วยกันเพื่อสร้างรูปหลายเหลี่ยม (ขึ้นอยู่กับการใช้สหภาพของคุณคุณอาจจบลงด้วยรูปหลายเหลี่ยมที่มีวงแหวน ของรูปหลายเหลี่ยม Java โทโพโลยีสวีทและการใช้งานอื่น ๆ คำนวณเรขาคณิตสามารถทำให้ง่ายขึ้นสำหรับคุณ หากคุณต้องการใช้ขอบเขตย่อยพิกเซลคุณจะต้องระมัดระวังเป็นอย่างยิ่งว่าคุณได้ตั้งค่า epsilon ที่ดีเพื่อให้คุณสามารถจัดชิดขอบที่อยู่ใกล้มาก แต่ไม่ได้สัมผัสอย่างแน่นอน

หากคุณต้องการนำขอบและรวมเข้าด้วยกันคุณจะต้องสร้างกราฟของการตัดกันที่ขอบและใช้โค้ดที่ลัดกราฟ (เช่นทวนเข็มนาฬิกา) เพื่อค้นหาตำแหน่งที่มันปิดเข้าด้วยกันเพื่อสร้างรูปหลายเหลี่ยม นี่คือการทำงานของการใช้สหภาพหลายอย่างของโพลีคอน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.