โฟโตแกรมเมตรีและผลลัพธ์
UAT 361 เทคโนโลยีระบบอากาศยานไร้คนขับเพื่อการสำรวจ ทำแผนที่ และตรวจสอบ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- อธิบายว่าความลึกได้มาจาก parallax เมื่อกล้องย้ายตำแหน่ง และคำนวณความลึกจาก parallax
- อธิบายขั้นตอน Structure from Motion และ bundle adjustment และความหมายของ reprojection error
- เลือกผลลัพธ์ orthomosaic, point cloud, mesh, DSM และ DTM ให้ตรงคำถามของผู้ใช้
- คำนวณปริมาตรกองวัสดุจากกริดความสูงและเปิดเผยพื้นที่ที่ไม่มีข้อมูล
ทำไมต้องรู้
โปรแกรมทำแผนที่สมัยใหม่กดปุ่มเดียวก็ได้ผลลัพธ์สวยงาม แต่เมื่อแผนที่แยกเป็นสองก้อน กองวัสดุมีรูโหว่ หรือผู้ใช้ขอ “ความสูงพื้นดิน” ใต้ต้นไม้ ผู้ที่ไม่เข้าใจว่าภาพกลายเป็นแผนที่ได้อย่างไรจะแก้ปัญหาไม่ได้ และอาจส่งไฟล์ที่ชื่อถูกแต่ความหมายผิด โมดูลนี้อธิบายกลไกเท่าที่จำเป็นต่อการตัดสินใจ
ความลึกมาจาก parallax
ภาพถ่ายหนึ่งใบบอกทิศทางจากกล้องไปยังวัตถุ แต่ไม่บอกระยะ เมื่อกล้องย้ายตำแหน่ง จุดเดียวกันจะปรากฏในตำแหน่งภาพที่ต่างกัน เรียกว่า parallax ลองยกนิ้วขึ้นหน้าตาแล้วหลับตาทีละข้าง นิ้วที่อยู่ใกล้จะกระโดดมากกว่าวัตถุที่อยู่ไกล นี่คือหลักเดียวกับที่โฟโตแกรมเมตรีใช้
สำหรับภาพคู่ที่ถ่ายจากความสูงเดียวกัน ห่างกัน (ระยะฐาน) ตำราโฟโตแกรมเมตรีของ Wolf และคณะให้ความสัมพันธ์ เมื่อ คือ parallax บนระนาบภาพ
ตัวอย่างที่ 1 ความสูงหลังคาจาก parallax
ใช้กล้องและแผนบินจากโมดูล 1: ระยะฐาน 16 m, = 8.8 mm, ขนาดพิกเซล 13.2/5472 mm
BASE_M, FOCAL_MM = 16.0, 8.8
PIXEL_MM = 13.2 / 5472
def depth_m(parallax_px):
return BASE_M * FOCAL_MM / (parallax_px * PIXEL_MM)
ground_px, roof_px = 729.6, 810.7
z_ground, z_roof = depth_m(ground_px), depth_m(roof_px)
print(f"ground {z_ground:.1f} m below camera, roof {z_roof:.1f} m, roof height {z_ground - z_roof:.1f} m")
print(f"1 px parallax error at 80 m changes depth by about {80 ** 2 / (BASE_M * FOCAL_MM) * PIXEL_MM:.2f} m")
ground 80.0 m below camera, roof 72.0 m, roof height 8.0 m
1 px parallax error at 80 m changes depth by about 0.11 m
parallax ต่างกันราว 81 พิกเซลบอกว่าหลังคาสูงประมาณ 8 m ความคลาดของ parallax เพียงหนึ่งพิกเซลทำให้ความลึกเปลี่ยนเกือบ 11 cm ความสูงจึงมักคลาดมากกว่าตำแหน่งแนวราบ และระยะฐานที่ยาวขึ้นเมื่อเทียบกับความสูงช่วยให้ความลึกแม่นขึ้น
Structure from Motion
ในงานโดรน เราไม่ได้ใช้ภาพคู่เดียว แต่ใช้ภาพหลายร้อยใบ Structure from Motion (SfM) ประมาณตำแหน่งและทิศของกล้องทุกตัวพร้อมรูปทรงของฉากไปพร้อมกัน วิธีนี้พัฒนาจากงานคอมพิวเตอร์วิทัศน์ เช่น Snavely และคณะ (2006) และถูกนำมาใช้ในงานภูมิศาสตร์อย่างแพร่หลายตามที่ Westoby และคณะ (2012) สรุปไว้
- ภาพและแบบจำลองกล้อง อ่านขนาดภาพ ทางยาวโฟกัส และความบิดเบี้ยวของเลนส์
- หาจุดเด่นและจับคู่ เช่น มุมของรอยบนพื้น จุดที่ตามได้ข้ามหลายภาพเรียก tie point คู่ที่ขัดกับเรขาคณิตจะถูกคัดออก
- SfM และ bundle adjustment OpenSfM เริ่มจากภาพคู่แรก แล้วเพิ่มภาพทีละใบ คำนวณจุดสามมิติ และปรับค่าทั้งหมดร่วมกันเป็นระยะด้วย bundle adjustment เพื่อให้จุดที่ฉายกลับลงภาพตรงกับตำแหน่งที่เห็นจริงมากที่สุด
- จับคู่หนาแน่น ประมาณความลึกของพิกเซลจำนวนมาก ได้ point cloud หนาแน่น
- ผูกพิกัดและสร้างผลลัพธ์ ใช้ตำแหน่งกล้องหรือ GCP แล้วสร้าง orthomosaic, DSM หรือ mesh
Reprojection error วัดว่าจุดที่ฉายกลับลงภาพห่างจากตำแหน่งที่เห็นกี่พิกเซล เป็นความสอดคล้องภายใน ไม่ใช่ความคลาดบนพื้นโลก แบบจำลองที่ reprojection error ต่ำยังเลื่อนทั้งผืนได้ถ้าการผูกพิกัดผิด
แผนที่แยกเป็นสองก้อน
ถ้ากลางพื้นที่เป็นสระน้ำที่สะท้อนท้องฟ้า หรือหลังคาลายซ้ำ โปรแกรมอาจจับคู่ข้ามสองฝั่งไม่ได้ การเพิ่มจุดในขั้นจับคู่หนาแน่นไม่ช่วย เพราะไม่ได้สร้างภาพเชื่อมที่ไม่มีอยู่ ต้องตรวจภาพตรงรอยต่อ และถ้าจำเป็นให้บินเก็บภาพเพิ่มตามขอบที่มีพื้นผิวคงที่
ผลลัพธ์ห้าชนิด
| ผลลัพธ์ | ข้อมูลที่เก็บ | ตอบคำถาม | ระวัง |
|---|---|---|---|
| Orthomosaic | ภาพต่อที่แก้ผลของมุมกล้องและภูมิประเทศ พร้อมพิกัด | มีอะไรอยู่ที่ไหน ขอบเขตเท่าใด | ขอบอาคารและสิ่งเคลื่อนไหวผิดรูปได้ |
| Point cloud | จุด X, Y, Z จำนวนมาก | รูปทรงและระดับของสิ่งที่เห็น | รูโหว่และจุดหลุด |
| Mesh | ผิวสามเหลี่ยมพร้อมภาพปะผิว | ดูรูปทรงจากหลายมุม | ผิวที่โปรแกรมเติมอาจไม่มีภาพรองรับ |
| DSM | ความสูงผิวบนสุด รวมต้นไม้และอาคาร | ผิวบนสุดสูงเท่าใด | ค่าบนหลังคาไม่ใช่พื้นดิน |
| DTM | ความสูงพื้นดินหลังกรองสิ่งเหนือพื้น | ความลาดชันและภูมิประเทศ | ใต้พุ่มไม้ทึบอาจเป็นค่าประมาณ |
OpenDroneMap ส่งออก orthophoto และ DEM เป็น GeoTIFF, point cloud เป็น LAZ และ mesh เป็น OBJ ส่วน DSM และ DTM ต้องเปิดตัวเลือกให้สร้าง
กล้อง RGB เห็นเฉพาะสิ่งที่แสงสะท้อนมาถึง ใต้พุ่มไม้ทึบจึงอาจไม่มีภาพพื้นดินเลย ส่วน LiDAR วัดระยะจากเวลาที่แสงเลเซอร์เดินทางไปกลับ และอาจได้จุดพื้นดินผ่านช่องว่างของพุ่มไม้ แต่ต้องมีการสอบเทียบและระบบนำทางที่ดี USGS กำหนดข้อกำหนดของข้อมูล LiDAR ไว้ใน Lidar Base Specification ไฟล์ point cloud ที่หน้าตาเหมือนกันจากสองวิธีจึงมีหลักฐานและข้อจำกัดต่างกัน
ปริมาตรกองวัสดุ
ปริมาตรคำนวณจากกริดความสูง: แต่ละช่องมีพื้นที่ และความสูงผิวลบความสูงฐาน ผลลัพธ์ขึ้นกับ ระดับฐาน ที่เลือกมาก และช่องที่ไม่มีข้อมูลต้องรายงาน ไม่ใช่นับเป็นศูนย์
ตัวอย่างที่ 2 ปริมาตรจากกริด DSM และผลของระดับฐาน
CELL_AREA = 2.0 * 2.0 # m² ต่อช่อง
dsm = [ # ความสูงผิว (m) None = ไม่มีข้อมูล
[100.0, 101.0, 102.0, 100.0],
[101.0, 103.0, 104.0, 101.0],
[100.0, 102.0, None, 100.0],
]
def volume(base_level):
cells = [z for row in dsm for z in row if z is not None]
return sum(CELL_AREA * max(z - base_level, 0.0) for z in cells)
missing = sum(z is None for row in dsm for z in row)
for base in (100.0, 100.5):
print(f"base {base} m: volume {volume(base):.0f} m3")
print(f"cells without data: {missing} of {sum(len(r) for r in dsm)} -> report, do not treat as zero")
base 100.0 m: volume 56 m3
base 100.5 m: volume 42 m3
cells without data: 1 of 12 -> report, do not treat as zero
ยกระดับฐานขึ้นเพียง 0.5 m ปริมาตรลดลงหนึ่งในสี่ ระดับฐานจึงต้องตกลงกับผู้ใช้และบันทึกในรายงาน ส่วนช่องที่ไม่มีข้อมูลอยู่กลางกอง ถ้านับเป็นศูนย์ปริมาตรจะต่ำเกินจริง ต้องเก็บภาพเพิ่มหรือระบุว่าประมาณค่าอย่างไร
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: ประมวลผลภาพชุดแรก
- ประมวลผลภาพจากโมดูล 1–2 ด้วย WebODM หรือโปรแกรมที่แล็บกำหนด ใช้ GCP ปรับ และกันจุดตรวจไว้
- อ่านรายงานการประมวลผล บันทึกจำนวนภาพที่จัดกล้องได้ จำนวน tie point และ reprojection error อธิบายว่าค่าใดบอกความถูกต้องไม่ได้
- เปิด orthomosaic, DSM และ point cloud ใน QGIS หาบริเวณที่ผิดรูปหรือมีรูโหว่ และหาสาเหตุจากภาพต้นฉบับ
- ตกลงระดับฐานของกองวัสดุกับ “ผู้ใช้” (อาจารย์) คำนวณปริมาตรด้วย QGIS และด้วยโค้ดตัวอย่างที่ 2 เทียบผล
- ทำตารางผลลัพธ์ที่จะส่งมอบ ระบุว่าแต่ละไฟล์ตอบคำถามใดและยังตอบอะไรไม่ได้
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ใช้ reprojection error เป็นความถูกต้องของแผนที่
- เรียก DSM ว่า DTM เพื่อให้ส่งงานครบ
- นับช่องที่ไม่มีข้อมูลเป็นความสูงศูนย์ ในการคำนวณปริมาตร
- ไม่บันทึกระดับฐาน ที่ใช้คำนวณปริมาตร
- ส่งออก raster ให้พิกเซลเล็กลง แล้วคิดว่าได้รายละเอียดเพิ่ม
สรุป
- ความลึกมาจาก parallax เมื่อกล้องย้ายตำแหน่ง ความสูงไวต่อความคลาดของ parallax
- SfM ประมาณกล้องและรูปทรงร่วมกัน bundle adjustment ลดความต่างเมื่อฉายกลับ reprojection error เป็นความสอดคล้องภายใน
- เลือกผลลัพธ์ให้ตรงคำถาม DSM คือผิวบนสุด DTM คือพื้นดิน
- ปริมาตรขึ้นกับระดับฐาน และต้องเปิดเผยพื้นที่ที่ไม่มีข้อมูล
แบบฝึกตรวจความเข้าใจ
- = 20 m, = 8.8 mm, parallax 2.2 mm ความลึกเท่าใด
- reprojection error 0.8 พิกเซล แปลว่าแผนที่คลาดไม่เกิน 0.8 พิกเซลบนพื้นใช่หรือไม่
- ผู้ใช้ต้องการออกแบบทางระบายน้ำในพื้นที่มีต้นไม้ ควรใช้ DSM หรือ DTM และต้องระวังอะไร
- กริด 5 ช่อง ช่องละ 4 m² สูงเหนือฐาน 1, 1, 2, 2, 3 m ปริมาตรเท่าใด
- ทำไมช่องที่ไม่มีข้อมูลจึงห้ามนับเป็นศูนย์
เฉลย
- m
- ไม่ใช่ เป็นความสอดคล้องภายในบนภาพ ความถูกต้องต้องวัดจากจุดตรวจ
- DTM และต้องตรวจว่าใต้ต้นไม้มีข้อมูลพื้นดินจริง ไม่ใช่ค่าประมาณจากขอบพุ่ม
- m³
- เพราะทำให้ปริมาตรต่ำกว่าความจริง ต้องรายงานและเก็บข้อมูลเพิ่มหรือระบุวิธีประมาณ
สรุปสูตรสำคัญ
| ความลึกจาก parallax (กรณีภาพคู่ขนาน) | |
| ความไวของความลึกต่อ parallax | |
| ปริมาตรจากกริด |
แหล่งอ้างอิงหลัก
- Wolf, P. R., DeWitt, B. A., & Wilkinson, B. E. (2014). Elements of photogrammetry with applications in GIS (4th ed.). McGraw-Hill Education. link
- Snavely, N., Seitz, S. M., & Szeliski, R. (2006). Photo tourism: Exploring photo collections in 3D. ACM Transactions on Graphics, 25(3), 835–846. link
- Westoby, M. J., Brasington, J., Glasser, N. F., Hambrey, M. J., & Reynolds, J. M. (2012). 'Structure-from-Motion' photogrammetry: A low-cost, effective tool for geoscience applications. Geomorphology, 179, 300–314. link
- Mapillary. Incremental reconstruction algorithm. OpenSfM documentation. link
- OpenDroneMap Authors. Outputs. OpenDroneMap documentation (Version 3.5). link
- U.S. Geological Survey. (2025). Lidar base specification (2025 rev. A). link
- Sampath, A., Shrestha, M., While, M., & Scholl, V. M. (2023). Guidelines for calibration of uncrewed aircraft systems imagery (Open-File Report 2023–1033). U.S. Geological Survey. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ
หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม