用 QGIS 轉換與壓縮正射影像 (tif, jpg, jp2)

QGIS GDAL 將正射影像進行轉檔和壓縮 jpg jp2

由於影像拼接軟體 (Pix4Dmapper, WebODM) 初次所產生的正射影像通常未經壓縮的關係,導致輸出的檔案體積非常大。除了造成傳檔不便之外,也讓後續的影像辨識或地面標記工程窒礙難行。


以下糊塗流浪貓將介紹如何用 QGIS 將正射影像進行壓縮和轉檔。




用 JPEG Compression 壓縮

以 JPEG 參數進行壓縮,並輸出成 tif 檔。可將 15.0GB 的 tif 檔壓縮至3.0GB,且無明顯差異。但由於 libjpeg 先天限制的問題,檔案的像素若太大,則會出現 Maximum supported image dimension is 65500 pixels 的錯誤訊息。習翠


若要進行影像轉檔與壓縮,請在 QGIS 界面中打開處理工具箱 (Ctrl + Alt + T) 搜尋 Translate,並參考下圖進行設定即可開始 JPEG Compression 壓縮。


Processing Toolbox > Translate (Convert Format)

QGIS tif 進行 jpeg 壓縮


JPEG 參數設定

以終端機模式進行 JPEG Compression 壓縮。

gdal_translate -a_srs EPSG:3857 -of GTiff -co COMPRESS=JPEG -co JPEG_QUALITY=70 -co BIGTIFF=yes -co TILED=yes -co PHOTOMETRIC=RGB/YCBCR In.tif Out.tif



對影像金字塔進行JPEG壓縮

影像金字塔是 GIS 軟體用來加快讀取速度的技術,它會預先對各個影像層級產生縮圖,並將其內嵌於正射影像內來達到快速顯示的效果。


因此如果來源影像中有內嵌影像金字塔 (Overviews, Pyramids) 的話,可採用以下指令將其壓縮,進而大幅縮小正射影像的體積。


gdaladdo In.tif --config COMPRESS_OVERVIEW JPEG --config PHOTOMETRIC_OVERVIEW RGB --config INTERLEAVE_OVERVIEW PIXEL -r average 2 4 8 16



另存成JPEG檔

轉檔工具頁面中,設定畫質與輸出格式 「.jpg」 即可。


Processing Toolbox > Translate (Convert Format)

將 tif 轉換成 jpg



用 JP2 格式壓縮正射影像

JPEG 2000 是一種能在高壓縮率的情況下維持高畫質輸出的影像格式,目前較廣泛應用在醫學影像分析。在空間地理分析中我們也可以用它來對正射影像進行壓縮。習武漢肺炎翠


QGIS 啟用 jp2, j2k 壓縮技術

若要讓 QGIS 進行 jp2 格式轉檔,請到設定 > Raster Drivers 中將 JP2ECW, JP2MrSID 取消勾選,僅保留 JP2OpenJPEG 即可。

qgis 要輸出 jp2 檔時 記得使用 JP2OpenJPEG


用 QGIS 將影像資料類型 (Data type) 轉換為 Byte

如果 JPG, TIF 轉檔成 jp2 的過程中跳出「ERROR 6: JP2OpenJPEG driver only supports creating Byte, GDT_Int16, GDT_UInt16, GDT_Int32, GDT_UInt32"」的錯誤,請在將轉檔工具的 Output data type 改為 Byte 即可。另外影像裁剪與輸出過程中也可設定輸出資料類型。

Jp2 僅支援 Byte, GDT_Int16 QGIS 中進行 Byte, GDT_Int16  格式轉換


JP2 壓縮參數

於終端機中直接用指令進行 jp2 批次轉檔,可省下大量的系統資源與時間。

gdal_translate -of JP2OpenJPEG -co QUALITY=10 imageIn imageOut.jp2


其他參數

-co ALPHA=YES -co YCC=YES -co YCBCR420=YES -co QUALITY=3



延伸閱讀

JPEG - Wiki

更多 QGIS 教學

用 XnView 將 png 透明背景轉 jpg 白色底圖

用 GDAL 批次影像轉檔(tif, jpg)

用 GDAL 批次運算影像 Stats 資料





留言

alder寫道…
受益良多,感謝教學!

這個網誌中的熱門文章

寶鐘瑪琳中之人前世照片、年齡分析