tuning 檔解析、完整流程
dtoverlay=...hdr 系列設定 + libcamera HDR 模式。{ "version": 1,
"algorithms": [
{ "Awb": { "mode": "auto" } },
{ "BlackLevel": { "r": 4096, "gr": 4096, "gb": 4096, "b": 4096 } },
{ "ColourMatrix": { "ccm": [ ... ] } },
{ "Denoise": { "strength": 0.3 } },
{ "LensShading": { "meshes": [ ... ] } },
{ "Contrast": { "strength": 1.0 } }
] }| 區塊 | 作用 | 對應單元 |
|---|---|---|
| Awb | 白平衡演算法設定 | 11 |
| BlackLevel | 黑位 offset(分通道) | 7 |
| ColourMatrix | CCM | 11 |
| Denoise | 降噪 | 13 |
| LensShading | LSC 網格 | 12 |
| Contrast | 對比/gamma | 14 |
改檔後重啟程式生效。修改前備份原檔;改壞可還原。
| 場景 | 驗證項目 |
|---|---|
| 室內白熾/日光燈 | 色彩、banding、AE 收斂 |
| 室外日光 | 過曝控制、白平衡 |
| 逆光 | tone mapping、測光 |
| 低光 | 雜訊、增益上限、AE |
RPi5 的 HDR 是多幀合成:快速連續拍不同曝光(如短/中/長),合成高動態範圍。
| 項目 | 說明 |
|---|---|
| 啟用 | dtoverlay=...hdr 或 libcamera HDR 模式 |
| 缺點 | 移動景物會 ghosting;幀率下降 |
| 適用 | 靜態/慢速場景的高動態需求 |
日期: 2026-08-16 場景: 室內日光燈 4000K 改動: Denoise strength 0.3 → 0.5 原因: 低光平坦區雜訊過明顯 結果: 平坦區 σ 下降 20%;細節區對比仍可接受 回歸: 日光場景未見明顯副作用 ✓ 附圖: tuning_20260816_v3.jpg
兩者是「翹翹板」:NR 抹掉細節 → Sharpen 拉回邊緣 → 但 Sharpen 同時放大 NR 殘留的雜訊。正確順序:
tuning/ # 放進 git base.json # 原始 v1-black.json # 黑位校正後 v2-lsc.json # LSC 後 v3-awb-ccm.json # 色彩後 v4-final.json # NR/Sharpen 後
每個版本對應一次驗收,出問題可以二分法回退。
場景:你要量化「NR strength 從 0 到 1 時,平坦區 σ 和紋理區對比的變化」,找出最佳平衡點。
#!/bin/bash
# 用不同 NR strength 拍攝同一場景
for NR in 0 0.2 0.4 0.6 0.8 1.0; do
# 建立臨時 tuning 檔(修改 Denoise strength)
cp base.json tuning_nr${NR}.json
python3 -c "
import json
with open('tuning_nr${NR}.json','r') as f: d=json.load(f)
for a in d['algorithms']:
if 'Denoise' in a: a['Denoise']['strength']=$NR
with open('tuning_nr${NR}.json','w') as f: json.dump(d,f,indent=2)
"
rpicam-still --raw --tuning-file tuning_nr${NR}.json \
--shutter 20000 --gain 4 --awb off --awbgains 1,1 \
-o nr_test_${NR}.jpg
done
echo "拍攝完成,用 Python 分析各張圖的 σ 和邊緣對比"RPi5 的 HDR 模式是「多幀合成」——快速連續拍攝不同曝光的幀,再合成高動態範圍影像:
| 症狀 | 可能原因 | 解決方案 |
|---|---|---|
| NR 開到 1.0 畫面仍有很多雜訊 | 增益太高(雜訊源頭過強),NR 無法完全消除 | 降增益是根本;NR 只能收尾。接受「增益上限」的物理限制 |
| Sharpen 開強後邊緣出現光暈(halo) | Sharpen 過度——邊緣過衝 | 降低 Sharpen 強度;用 200% 放大檢視邊緣品質 |
| HDR 模式下運動物體有重影 | 多幀合成的 motion compensation 不足 | 切回單幀模式;或降低 HDR 強度(減少幀數) |
| tuning JSON 改了但畫面沒變化 | JSON 格式錯誤或 libcamera 未重啟 | 用 python3 -m json.tool 驗證語法;重啟 rpicam-hello |
| 暗部有色彩斷層(color banding) | Gamma 曲線的暗部階梯太粗,或 CCM 的色階過飽和 | 調整 Contrast/Gamma 區塊;降低 CCM 的副對角元素 |
場景:你開始正式調校產品,需要一套「可回退、可歸因、可驗收」的 tuning 管理系統。本專案整合單元 14(工作流/回歸)、5(標準拍攝)、8(RAW 報告)、11/12/13(各區塊驗收)知識。
# 1. tuning 納入 git,每階段一個版本 mkdir -p tuning cp /usr/share/libcamera/ipa/rpi/pisp/ov5647.json tuning/base.json git init tuning 2>/dev/null; cd tuning git add base.json && git commit -m "base: 出廠預設" # 2. 每階段修改後 commit(可二分回退) # v1 黑位 → v2 LSC → v3 AWB/CCM → v4 NR/Sharpen # 3. 回歸腳本:四場景各拍一張,與基準比對 #!/bin/bash for SCENE in indoor daylight backlight lowlight; do rpicam-still --raw --tuning-file tuning/v4_final.json \ --shutter 20000 --gain 1 -o reg_${SCENE}.dng done # → 每張跑 raw_report.py + ΔE + 暗角比 + σ,與基準比較 # → 任一指標劣化超過閾值 = 回歸,git 回退到上一版
# 輸出範例 場景 ΔE 暗角比 σ 狀態 indoor 2.1 0.93 1.8 PASS daylight 2.4 0.94 1.6 PASS backlight 3.0 0.92 2.1 WARN (ΔE>2.5) lowlight 2.8 0.90 3.5 FAIL (σ>3.0) # → 檢視 lowlight 是否可接受;不可 → 調整 NR 並 commit v5
| 面向 | RPi5 | Orange Pi | Orin Nano | Thor |
|---|---|---|---|---|
| tuning 格式 | JSON(可讀可改) | —(無標準) | 私有(工具編輯) | 私有(Holoscan) |
| 版本管理 | git 直接管 JSON | — | 工具匯出/匯入 | 工具管理 |
| 回歸自動化 | 自寫腳本(全開源) | DIY | NVIDIA 內建驗證 | Holoscan pipeline |
| 坑 | 無內建驗證工具 | 無工具鏈 | 黑箱、綁 NVIDIA | 生態新 |
| 步驟 | 暫存器 | 操作 | 位元級說明 |
|---|---|---|---|
| 1. 讀取 sharpening 設定 | ISP tuning register block | devmem2 read | bit[7:4]=sharpening strength, bit[3:0]=threshold |
| 2. 調整銳利度 | 同上 | 寫入新值 | strength=0xA → 中等銳利度 |
| 3. 設定 denoise-sharpen 平衡 | 相鄰 register | OR bits | bit[0]=1 先 denoise 再 sharpen |
| 4. 驗證 | read-back | — | 確認設定生效 |
決策樹 A:影像模糊(銳利度不足)
影像模糊 ├─ 檢查 A:對焦是否正確 │ ├─ 手動對焦 → 調整 lens position │ ├─ 自動對焦 → AF 算法收斂問題 │ └─ 固定焦距 → 繼續 ├─ 檢查 B:sharpening 設定 │ ├─ 過低 → 增加 sharpening strength │ ├─ 過高 → 出現 ringing → 降低 strength │ └─ 適中 → 繼續 ├─ 檢查 C:denoise 是否過強 │ ├─ 是 → 降低 denoise strength │ └─ 否 → 繼續 └─ 檢查 D:解析度 / downscaling 是否造成 ├─ 是 → 增加輸出解析度或優化 downscale 演算法 └─ 否 → lens 品質或 sensor 限制
| 面向 | RPi5 | Orange Pi | Orin Nano | Thor | 推薦 |
|---|---|---|---|---|---|
| 銳利度控制 | tuning file | 有限 | NV tools | Holoscan + AI | 各有方式 |
| HDR 支援 | 有限 (staggered) | 無 | ✓ 多 frame HDR | ✓ AI HDR | Orin/Thor HDR 最佳 |
| 調校工具 | libcamera tunning tool | 手動 | NV camera tools | Holoscan dashboard | RPi5 開源最透明 |
| 整體畫質天花板 | 中等 | 較低 | 高 | 最高 | Thor 畫質最高 |