大傾斜視角航拍圖像像素級定位

第一步對圖像進行讀取:

研究數據集:

ARCGIS上觀察傾斜程度:

PIL 對路徑的支持更友好:PIL 在處理文件路徑(尤其是包含中文字符的路徑)時通常更加健壯。OpenCV 在某些版本或特定環境下可能會對非英文路徑處理不當,導致讀取或保存失敗。
跨平臺兼容性:PIL 在不同操作系統(如 Windows、Linux、macOS)上的路徑處理更為一致,這在開發跨平臺應用時是一個優勢?

import pandas as pd
from PIL import Image# 專業紅外圖像讀取方式
def read_ir_image(file_path):try:# 先用PIL讀取pil_img = Image.open(file_path)# 轉換為numpy數組img_array = np.array(pil_img)# 檢查是否為單通道紅外數據if len(img_array.shape) == 2:  # 單通道print("檢測到單通道紅外數據")# 歸一化處理示例(根據實際傳感器數據調整)img_array = (img_array - img_array.min()) / (img_array.max() - img_array.min()) * 255img_array = img_array.astype(np.uint8)# 轉換為OpenCV格式return cv2.cvtColor(img_array, cv2.COLOR_RGB2BGR) if len(img_array.shape) == 3 else cv2.cvtColor(img_array,cv2.COLOR_GRAY2BGR)except Exception as e:print(f"紅外圖像處理錯誤: {e}")# 將 OpenCV 圖像轉換為 PIL 圖像并保存(支持中文路徑)

第二步對衛星圖像進行分割:

分割可以提高處理效率:將大尺寸的衛星圖像分割成多個小塊(tiles),每個小塊的尺寸與無人機圖像相近,可以顯著降低單次處理的數據量,加快處理速度。
并行處理:分割后的圖像塊可以進行并行處理,進一步提升整體處理效率。?

局部匹配更精確:在大尺寸圖像上直接進行匹配可能會因為場景復雜性高、特征點分布不均等原因導致匹配精度下降。而通過分割,可以在每個小塊內進行更精細的特征提取和匹配,提高匹配精度。

?

讀取匹配文件:
使用 pd.read_csv 讀取 matches.csv 文件。
matches_df['coordinate'] 列存儲了裁剪中心坐標,并通過 apply 解析為元組形式 (x_center, y_center)。

# 讀取 matches.csv 文件
matches_df = pd.read_csv(r'E:\傾斜\傾斜\Match-Dataset-train\gs20251-ir\matches.csv')# 打印列名以確認
print("Columns:", matches_df.columns)# 解析 coordinate 列
matches_df['coordinate'] = matches_df['coordinate'].apply(lambda x: tuple(map(int, x.strip('()').split(', '))))

對裁剪圖片進行填充并保存:

  # 計算裁剪區域half_crop = crop_size // 2x1 = max(0, x_center - half_crop)y1 = max(0, y_center - half_crop)x2 = min(satellite_img.shape[1], x_center + half_crop)y2 = min(satellite_img.shape[0], y_center + half_crop)# 裁剪衛星圖cropped_satellite = satellite_img[y1:y2, x1:x2]# 如果裁剪區域小于指定尺寸,進行填充if cropped_satellite.shape[0] < crop_size or cropped_satellite.shape[1] < crop_size:padded_satellite = np.zeros((crop_size, crop_size, 3), dtype=np.uint8)padx1 = (crop_size - cropped_satellite.shape[1]) // 2pady1 = (crop_size - cropped_satellite.shape[0]) // 2padx2 = crop_size - cropped_satellite.shape[1] - padx1pady2 = crop_size - cropped_satellite.shape[0] - pady1padded_satellite[pady1:pady1 + cropped_satellite.shape[0],padx1:padx1 + cropped_satellite.shape[1]] = cropped_satellitecropped_satellite = padded_satellite

?第三步對圖片進行傾斜校正:

要根據無人機的姿態角(yaw、pitch、roll)將圖像修正為正射投影(orthorectification),需要進行一系列的幾何變換。

Yaw 角影響圖像的水平旋轉,可以通過簡單的旋轉來修正。

Pitch 和 Roll 的修正較為復雜,需要進行三維旋轉。可以使用 OpenCV 的 warpPerspective 函數來實現。

上述方法基于簡單的幾何變換,對于復雜的地形和高精度要求,可能需要更專業的正射糾正算法(如使用 DEM 數據)。

    # 讀取姿態角數據csv_path = 'drone.csv'df = pd.read_csv(csv_path)image_name = '000000.jpg'image_data = df[df['drone_name'] == image_name].iloc[0]yaw, pitch, roll = image_data['yaw'], image_data['pitch'], image_data['roll']# Yaw 修正corrected_yaw = rotate_image(ir_image, -yaw)# Pitch 和 Roll 修正corrected_pitch_roll = correct_pitch_roll(corrected_yaw, pitch, roll)

?第四步進行訓練學習

可以適當調整訓練輪次改到100,然后每一個批次可以改為8,以提高訓練效率。

        # Eval Configparser.add_argument('--batch_size_eval', default=128, type=int)parser.add_argument('--eval_every_n_epoch', default=1, type=int)parser.add_argument('--normalize_features', default=True, type=bool)parser.add_argument('--eval_gallery_n', default=-1, type=int)

?第五步擴大數據集:

歷史影像地圖數據提供了更多的樣本,可以幫助模型更好地學習和泛化。特別是在數據集較小或特定場景數據不足的情況下,歷史影像可以作為補充數據。

尋找歷史影像數據,將歷史影像的數據格式、分辨率等與現有數據集一致,可以直接將其加入數據集中進行訓練。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90249.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90249.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90249.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis 緩存進階篇,緩存真實數據和緩存文件指針最佳實現?如何選擇?

目錄 一. 場景再現、具體分析 二. 常見實現方案及方案分析 2.1 數據庫字段最大存儲理論分析 2.2 最佳實踐方式分析 三. 接口選擇、接口分析 四. 數據庫設計 4.1 接口緩存表設計 4.1.1 建表SQL 4.1.2 查詢接口設計 4.2 調用日志記錄表設計 4.2.1 建表SQL 4.2.2 查詢…

Redis常用數據結構以及多并發場景下的使用分析:Hash類型

文章目錄前言hash 對比 String簡單存儲對象【秒殺系統】- 商品庫存管理【用戶會話管理】- 分布式Session存儲【信息預熱】- 首頁信息預熱降級策略總結前言 上文我們分析了String類型 在多并發下的應用 本文該輪到 Hash了&#xff0c;期不期待 兄弟們 hhh Redis常用數據結構以…

雙因子認證(2FA)是什么?從零設計一個安全的雙因子登錄接口

前言在信息系統逐漸走向數字化、云端化的今天&#xff0c;賬號密碼登錄已不再是足夠安全的手段。數據泄露、撞庫攻擊、社工手段頻發&#xff0c;僅靠「你知道的密碼」已不足以保證賬戶安全。因此&#xff0c;雙因子認證&#xff08;2FA, Two-Factor Authentication&#xff09;…

stack棧練習

為了你&#xff0c;我變成狼人模樣&#xff1b; 為了你&#xff0c;染上了瘋狂~ 目錄stack棧練習棧括號的分數單調棧模板框架小結下一個更大元素 I&#xff08;單調棧哈希&#xff09;接雨水stack棧練習 棧 一種先進后出的線性數據結構 具體用法可參考往期文章或者維基介紹i…

詳細頁智能解析算法:洞悉海量頁面數據的核心技術

詳細頁智能解析算法&#xff1a;突破網頁數據提取瓶頸的核心技術剖析引言&#xff1a;數字時代的數據采集革命在當今數據驅動的商業環境中&#xff0c;詳細頁數據已成為企業決策的黃金資源。無論是電商商品詳情、金融公告還是新聞資訊&#xff0c;??有效提取結構化信息??直…

ubuntu環境如何安裝matlab2016

一、下載安裝文件&#xff08;里面包含激活包CRACK&#xff09;可從度盤下載&#xff1a;鏈接:https://pan.baidu.com/s/1wxmVMzXiSY4RIT0dyKkjZg?pwd26h6 復制這段內容打開「百度網盤APP 即可獲取」注&#xff1a;這里面包含三個文件&#xff0c;其中ISO包含安裝文件&#x…

Mybits-plus 表關聯查詢,嵌套查詢,子查詢示例演示

在 MyBatis-Plus 中實現表關聯查詢、嵌套查詢和子查詢&#xff0c;通常需要結合 XML 映射文件或 Select 注解編寫自定義 SQL。以下是具體示例演示&#xff1a;示例場景 假設有兩張表&#xff1a; 用戶表 userCREATE TABLE user (id BIGINT PRIMARY KEY,name VARCHAR(50),age IN…

Stable Diffusion Web 環境搭建

默認你的系統Ubuntu、CUDA、Conda等都存在&#xff0c;即具備運行深度學習模型的基礎環境 本人&#xff1a;Ubuntu22.04、CUDA11.8環境搭建 克隆項目并且創建環境 https://github.com/AUTOMATIC1111/stable-diffusion-webui conda create -n sd python3.10運行過程自動安裝依賴…

嵌入式系統中實現串口重定向

在嵌入式系統中實現串口重定向&#xff08;將標準輸出如 printf 函數輸出重定向到串口&#xff09;通常有以下幾種常用方法&#xff0c;下面結合具體代碼示例和適用場景進行說明&#xff1a; 1. 重寫 fputc 函數&#xff08;最常見、最基礎的方法&#xff09; 通過重寫標準庫中…

static補充知識點-代碼

public class Student {private static int age;//靜態的變量private double score;//非靜態的方法public void run(){}public static void go(){}public static void main(String[] args) {new Student().run();Student.go();} } public class Person {//2 &#xff1a; 賦初始…

使用泛型<T>,模塊化,反射思想進行多表數據推送

需求&#xff1a;有13個表&#xff0c;其中一個主表和12細表&#xff0c;主表用來記錄推送狀態&#xff0c;細表記錄12種病例的詳細信息&#xff0c;現在需要把這12張病例表數據進行數據推送&#xff1b;普通方法需要寫12個方法分別去推送數據然后修改狀態&#xff1b;現在可以…

光流 | RAFT光流算法如何改進提升

RAFT(Recurrent All-Pairs Field Transforms)作為ECCV 2020最佳論文,已成為光流估計領域的標桿模型。其通過構建4D相關體金字塔和GRU迭代優化機制,在精度與泛化性上實現了突破。但針對其計算效率、大位移處理、跨場景泛化等問題,研究者提出了多維度改進方案,核心方向可系…

linux/ubuntu日志管理--/dev/log 的本質與作用

文章目錄 **一、基本概念****二、技術細節:UNIX域套接字****三、在不同日志系統中的角色****四、應用程序如何使用 `dev/log`****五、查看和驗證 `/dev/log`****六、總結 `/dev/log` 的核心作用**一、基本概念 /dev/log 是一個 UNIX域套接字(Unix Domain Socket),是Linux系…

EMC整改案例之(1):汽車NFC進入模塊BCI整改

EMC整改案例(1):汽車NFC進入模塊BCI整改 在汽車電子系統中,NFC(Near Field Communication)進入模塊用于實現無鑰匙進入功能,但它在電磁兼容(EMC)測試中常面臨挑戰。本案例聚焦于BCI(Bulk Current Injection)測試整改,該測試模擬大電流注入對設備的影響。以下是基于…

2025年INS SCI2區,靈活交叉變異灰狼算法GWO_C/M+集群任務調度,深度解析+性能實測

目錄1.摘要2.灰狼算法GWO原理3.靈活交叉變異灰狼算法GWO_C/M4.結果展示5.參考文獻6.代碼獲取7.算法輔導應用定制讀者交流1.摘要 隨著云計算的快速發展&#xff0c;受自然現象啟發的任務調度算法逐漸成為研究的熱點。灰狼算法&#xff08;GWO&#xff09;因其強大的收斂性和易于…

Java常用加密算法詳解與實戰代碼 - 附可直接運行的測試示例

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有堅忍不拔之志 &#x1f390; 個人CSND主頁——Micro麥可樂的博客 &#x1f425;《Docker實操教程》專欄以最新的Centos版本為基礎進行Docker實操教程&#xff0c;入門到實戰 &#x1f33a;《RabbitMQ》…

2025開發者工具鏈革命:AI賦能的效率躍遷

目錄引言&#xff1a;效率焦慮下的開發者生存現狀一、智能代碼編輯器&#xff1a;從輔助到主導的進化1.1 GitHub Copilot&#xff1a;全能型AI助手1.2 Cursor Pro&#xff1a;極致編碼體驗1.3 飛算JavaAI&#xff1a;垂直領域顛覆者二、版本控制革命&#xff1a;Git的AI進化論2…

“虛空”的物理、哲學悖論

一、虛空并非“完全真空”&#xff1a;量子場論揭示的“真空不空” 物理真空的本質 現代物理學中的“真空”并非絕對的空無一物&#xff0c;而是量子場的基態&#xff08;能量最低狀態&#xff09;。根據量子場論&#xff1a; 虛粒子漲落&#xff1a;真空中持續發生量子漲落&am…

CSP-S模擬賽二總結(實際難度大于CSP-S)

T1 很簡短&#xff0c;也很好做&#xff0c;第一題直接場切。 我的方法 首先要明確一件事&#xff1a;就是如果選了 ax,ya_{x,y}ax,y?&#xff0c;那么就必然要選 ay,xa_{y,x}ay,x?&#xff0c;所以第一步就在 ax,ya_{x,y}ax,y? 的基礎上加上 ay,xa_{y,x}ay,x?。 然后我…

旋轉屏幕優化

1.問題背景 從google原生算法&#xff0c;可以知道其有2個比較大的缺陷&#xff1a; 1) 通過重力傳感器傳來的x&#xff0c;y&#xff0c;z軸的加速度合成之后只有一個垂直往下的加速度&#xff0c;如果此時用戶在別的方向上有加速度&#xff0c;那么通過反余弦、反正切等計算…