ค้นหาข้อมูลในบล็อก (Search in this blog)

Sunday, November 15, 2009

การลบขอบข้อมูลภาพก่อนใช้งาน Gdal2tiles (ของฟรีและดีก็มีในโลก)

หากท่านเคยใช้งาน gdal2tiles กับข้อมูลภาพถ่ายดาวเทียมแบบเต็มระวาง มักจะพบว่าเมื่อเปิดข้อมูลภาพเหล่านั้นกับโปรแกรม Google Earth มักจะปรากฏขอบดำบริเวณภาพ สาเหตุก็เนื่องมาจากวงโคจรของดาวเทียมนั้นไม่ได้อยู่ในแนวเหนือใต้จริงๆแต่มีการเยื้องออกจากเส้นละติจูดต่างๆทำให้การบันทึกข้อมูลนั้นเป็นแนวเอียงวันนี้ขอนำเสนอเทคนิคการลบขอบดำออก (เมื่อต้องการนำภาพไปเปิดกับโปรแกรม Google Earth) ด้วยโปรแกรม gdalwarp โดยก่อนอื่นเราต้องทราบค่าบริเวณขอบดำเหล่านี้ก่อน (ปกติเป็นศูนย์) และเมื่อเราทราบแล้วเราก็จะบอกให้โปรแกรมทราบว่าค่าเหล่านี้เป็นค่าที่ไม่มีข้อมูล (No data) ให้จัดการทำให้เป็นชั้นข้อมูลเอลฟา (Alpha Layer) ซึ่งโปรแกรมด้านกาประมวลผลภาพส่วนใหญ่จะใช้เจ้าชั้นข้อมูลเอลฟานี้แทนค่าโปร่งใส (Transparent layer) นั่นเอง ตัวอย่างการใช้งานมีดังนี้ครับ

>>gdalwarp -srcnodata [value] -dstalpha [input_file] [output_file]

ตัวอย่างการมใช้งานมีดังนี้่ครับ

>>gdalwarp -srcnodata 0 -dstalpha abc.tif abc_alpha.tif

Monday, November 9, 2009

fwtools 2.4.6 ออกแล้วครับ !!!

วันนี้ได้ลองเข้าไปดูความเคลื่อนไหวของโปรแกรม fwtools เนื่องจากต้องไปช่วยอบรมเรื่อง Digital Image Processing ที่ สทอภ. ปรากฏว่ามีเวอร์ชันใหม่ออกมาแล้วคือ 2.4.6 สามารถดาวน์โหลดได้ ที่นี่ ครับ

Saturday, November 7, 2009

การลดรายละเอียดข้อมูลภาพและการเปลี่ยนภาพสีให้เป็นภาพขาวขดำ (เบื้องต้น) ด้วย GDAL

วันนี้ขอนำเสนอการลดรายละเอียดข้อมูลภาพ (Reduce resolution) และการแปลงภาพสีให้เป็นภาพขาว-ดำ (Color to Grey) อย่างง่ายด้วย gdalwarp (ลดรายละเอียด) และ gdal_translate (เปลี่ยนจากภาพสีให้เป็นภาพขาว-ดำ)

ตัวอย่างนี้สมมุติว่าผมมีภาพสีความละเอียด 1 เมตร ต้องการแปลงให้เป็นภาพขาว-ดำ ที่มีความละเอียดจุดภาพ 10 เมตร (จะเห็นว่าการทำงานนี้ประกอบด้วย 2 ขั้นตอนนะครับคือ ลดรายละเอียดและแปลงระบบสี)

ผมขอเริ่มด้วยการลดรายละเอียดข้อมูลภาพก่อนด้วย gdalwarp ซึ่งใช้คำสั่งดังนี้

>>gdalwarp -tr 10 10 -r cubic sample.tif resize.tif

โดย option "-tr" หมายถึง การกำหนดขนาดของจุดภาพ (GSD) ของไฟล์ผลลัพธ์ที่ต้องการ
และ option "-r" หมายถึง วิธีการ resampling จากตัวอย่างผมเลือกใช้วิธี Cubic Convolution

หลังจากได้ภาพที่ลดรายละเอียดจุดภาพลงแล้วเราจะทำการแปลงภาพสีให้เป็นภาพขาว-ดำด้วยโปรแกรม gdal_translate ดังนี้ครับ

>>gdal_translate -b 1 resize.tif resize_grey.tif

โดย option "-b" หมายถึง ให้เลือกให้เลือกเอาเฉพาะช่วงคลื่น (Band) ที่ต้องการเท่านั้น (จากตัวอย่างคือเอาเฉพาะช่วงคลื่นที่ 1 เท่านั้น)

ผลลัพธ์ที่ได้จากตัวอย่างนี้คือภาพต้นฉบับ (ภาพสี 3 ช่วงคลื่นขนาดจุดภาพ 1 เมตร) จะถูกแปลงให้เป็นภาพขาว-ดำ (1 ช่วงคลื่น) ที่มีความละเอียดจุดภาพ 10 เมตร และหากท่านใดต้องการทำกระบวนการนี้กับข้อมูลภาพจำนวนมากก็สามารถใช้การทำงานแบบ Batch processing ได้ครับ (ลองหาตัวอย่างการใช้งาน Batch processing ใน Blog นี้ดูนะครับ)

Friday, November 6, 2009

การแปลง Format ของข้อมูลเวคเตอร์ด้วย GDAL/OGR

วันนี้ขอนำเสนอการแปลงรูปแบบข้อมูลเวคเตอร์ เช่น การแปลงไฟล์ DGN ให้เป็น KML เป็นต้น
การทำงานให้ใช้คำสั่ง ogr2ogr ซึ่งมี syntax การใช้งานดังนี้ครับ

>>ogr2ogr -option output_file input_file

โดย option ที่สำคัญมีดังนี้
-f "format_name" ใช้สำหรับการระบุ format ของผลลัพธ์ที่ต้องการ เช่น -f "KML" หรือ -f "ESRI Shapefile" เป็นต้น
-s_srs ใช้สำหรับการระบุระบบอ้างอิงทางตำแหน่งของไฟล์ต้นฉบับ เช่น -s_srs epsg:4326 หรือ -s_srs epsg:32647 เป็นต้น
-t_srs ใช้สำหรับการระบุระบบอ้างอิงทางตำแหน่งของไฟล์ผลลัพธ์

ตัวอย่างการใช้งาน

>>ogr2ogr -f "KML" index.kml index.shp

นอกจากนี้เรายังสามารถแปลงระบบอ้างอิงทางตำแหน่ง (ระบบพิกัด) พร้อมกับการแปลง format ในคำสั่งเดียวดังนี้

>>ogr2ogr -s_srs epsg:32647 -t_srs epsg:4326 -f "KML" index.kml index.shp