MATLAB批量读取航摄相片EXIF信息和GNSS信息以及MATLAB批量经纬度坐标转换空间直角坐标
前言
沒有前言,創作不易,希望家人們點點贊,如有錯誤評論留言,感謝支持!
文章目錄
- 前言
- 一、MATLAB批量讀取航攝相片的EXIF信息,并批量提取其GNSS經緯度信息
- (1)前述:
- (2)代碼實現和結果:
- 二、地理經緯度坐標轉空間直角坐標原理及公式
- (1) 轉換原理
- (2) 轉換公式
- 三、利用MATLAB批量轉換坐標
- 四、根據外部工具驗證其轉換精度
- (1)利用pix4D的航線報告與MATLAB轉換后繪制的航線比較
- (2)利用坐標轉換COORD軟件轉換后與MATLAB轉換后的結果比較
一、MATLAB批量讀取航攝相片的EXIF信息,并批量提取其GNSS經緯度信息
(1)前述:
所謂航攝相片的EXIF信息,就是 (可交換圖像文件格式)(英語:Exchangeable image file format,官方簡稱Exif),是專門為數碼相機的照片設定的,可以記錄數碼照片的屬性信息和拍攝數據。下圖分別是航攝圖片的詳細屬性信息以及在matlab中讀取的結果。
| 圖1 圖片屬性信息 | 圖2 MATLAB顯示 |
GNSS經緯度信息就是BLH(緯度,經度,大地高),我們在圖片的詳細信息可以看見,而在matlab中讀取之后字段名分別為BLH(GPSLatitude,GPSLongitude,GPSAltitude)
(2)代碼實現和結果:
1: 代碼思路: (批量的航攝相片===>matlab讀取每張相片EXIF信息===>讀取EXIF信息的GNSS經緯度坐標===>經緯度的度分秒轉換為度===>導出保存為xls文件。)
2:程序清單:
(1) dir函數----格式:a=dir(‘filename’ , ‘*.txt / *.jpg / *.tiff’ ) 其表示將盤定位到你存放文件的文件里面,會列舉出你指定問filename路徑下的固定格式的文件,我下面的代碼是由于我將相片文件放在和程序運行保存的文件夾里面,所以沒有fliename
(2) imfinfo函數----格式:a=imfinfo(‘filename’) 其用于讀取圖片的文件信息,相同用法的還有exifread函數
(3) xlswrite函數----格式:xlswrite(’ filename+名字.xls ’ , 變量名) 用于將變量里面的內容保存為xls表格輸出
我們將程序提取保存后的經緯度的表格打開,可以看見明顯的BLH格式。
二、地理經緯度坐標轉空間直角坐標原理及公式
(1) 轉換原理
我國的參心坐標系可以分為參心大地坐標系和參心空間直角坐標系;參心大地坐標系的坐標元素是BLH(也就是我們常見的經緯度坐標)而參心空間直角坐標系的坐標元素是XYZ(注意不是笛卡爾坐標系,xy的方向是反的),他們的原點都是參考橢球的原點。
| 圖1 參心大地坐標系 | 圖2 參心空間直角坐標系 |
而其轉換原理就是將兩個坐標系上的同名點投影到點所在的子午平面上,建立對應的數學關系,進行轉換。
(2) 轉換公式
我們設A點的大地坐標(B,L,H)以及對應的空間直角坐標(X,Y,Z)以及下面的一系列參數:
橢球基準:西安80坐標系
參考橢球長半軸:a=6378140±5(m)
參考橢球短半軸:b=6356755.2882(m)
過A點的卯酉圈曲率半徑:
參考橢球的第二偏心率:
公式:
三、利用MATLAB批量轉換坐標
2:程序清單:
(1) importdata函數—格式:a=imortdata(‘filename’) 用于讀取表格以及文本格式文件
(2) format long g:用于關閉數據科學計數法顯示
四、根據外部工具驗證其轉換精度
根據上述轉換后的坐標數據,繪制其這一組航攝相片的航線圖
plot(XX,YY,'--gs',...'LineWidth',2,...'MarkerSize',3,...'MarkerEdgeColor','r',...'MarkerFaceColor',[1,0.5,0.5]); xlim([-1517450 -1517150]); ylim([5268200 5268340]); xlabel('Y',"Color",'r'); ylabel('X',"Color",'r'); title('該航攝相片組的航線','color','r'); grid on;(1)利用pix4D的航線報告與MATLAB轉換后繪制的航線比較
需要注意的是我在pix4D中選用的WGS 84 UTM 48N的平面投影,是經緯度與平面坐標之間的轉換
而我計算的經緯度與空間直角坐標之間的轉換,所以航線會有差別,這里只為了做參考。
| 圖1 MATLAB繪制的航線 | 圖2 pix4D質量報告的航線 |
(2)利用坐標轉換COORD軟件轉換后與MATLAB轉換后的結果比較
我們抽取第一張相片的經緯度利用坐標轉換軟件轉換后與matlab轉換后的結果比較,轉換精度還可以,至于毫米級之后的精度,是因為西安80橢球參數長半軸a=6378140±5(m),我直接省略了±5,所以各位可以自行選用。
| 圖1 COORD軟件 | 圖2 MATLAB |
總結
以上是生活随笔為你收集整理的MATLAB批量读取航摄相片EXIF信息和GNSS信息以及MATLAB批量经纬度坐标转换空间直角坐标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IC设计中时钟偏斜对延时的影响
- 下一篇: 2021-05-1java基础