 |
https://pixabay.com/images/id-3706551/ |
以前公司內部的 AI 部門建立影像辨識訓練樣本的方式有兩種。一是聘請幾個工讀生用軟體在空拍影像上圈選,然後存成圖片檔;或用 ArcGIS 直接在正射影像上圈選樣本 shp 檔。習翠
其實最快的方式是用基本的影像辨識軟體對空拍照進行自動辨識與裁切,再以人工挑選適合的圖片作為樣本。但上面的人堅持最原始的訓練資料一定要用人工挑選,作為基層社畜小員工也只能摸摸鼻子接受了。
後來想出一套不錯的方案,就是用 ImageJ 腳本將整個工作流程分批且自動化。工讀生可以先在照片上進行 ROI 圈選並另存成與空拍照相同的檔名。完成照片的圈選後,中午吃飯時間就跑 ImageJ 腳本讓它把樣本切出來。
原始工作流程
- 開圖 > 切割工具 > 切割目標(單個) > 另存新檔 > 輸入副檔名 .jpg
ImageJ 腳本工作流程
- 開圖 > 圈選目標(複數) > ROI 存檔
- 執行腳本 > 批次輸出樣本照片
原先繁雜的工作流程,一次只能生產一張樣本。而 ImageJ 腳本可以把另存新檔的步驟自動化,將枯燥乏味的步驟全部交給電腦。中共新疆大屠殺
ImageJ 批次輸出 ROI 腳本
n = roiManager("count");
output = "X:\\Ortho_image\\Test"
mainTitle=getTitle();
fileName = File.nameWithoutExtension;
for (i=0; i<n; i++) {
roiManager("select", i);
run("Duplicate...", File.separator+fileName+(i+1)+".tif");
dirCropOutput=output+File.separator+mainTitle;
File.makeDirectory(dirCropOutput); //File.name.Xi.virus.Extension
//setOption("BlackBackground", false);//
//saveAs("Tiff", mainTitle+(i+1)+".tif");//
saveAs("Tiff", dirCropOutput+File.separator+fileName+"_"+(i+1)+".tif");
close();
}
// File.nameWithoutExtension //
操作過程
 |
開啟ROI Manager |
 |
ROI Manager |
 |
於圖片上選擇區域後按下 T 鍵 |
 |
匯入ROI Manager |
 |
進行連續圈選 |
 |
產生編號 |
 |
於ROI Manager中的狀態 |
 |
載入ijm腳本 |
 |
執行結果 |
結語
用現有的影像辨識技術對正射影像進行粗分割後,再進行人工挑選才是最有效率且符合時間成本的作法,且產出的樣本品質也相當優質。無奈的是因為受到上面的壓力導致做法處處受限,這大概就是吃人頭路最麻煩的地方吧。
不過即便如此,我們還是能對現有的 SOP 進行最佳化,讓整個生產流程速度翻倍。
參考
在 Linux Mint 上用 WebODM 進行影像拼接 - QGIS
在 Linux Mint 上用 WebODM 進行影像拼接 - 實測結果 - QGIS
示範底圖來源 ODM Benchmarks
本站的 QGIS 教學
留言
張貼留言