Configuring Camera Parameters#
Exposure Time#
Exposure Time 定義了每張畫格中相機感光元件曝光於光線下的時間長度。它是影像擷取中最重要的參數之一,因為它會直接影響影像亮度、動態模糊和 Quality。
Exposure Time 的影響#
在曝光期間,感光元件會收集光子並將其轉換為電訊號。Exposure Time 越長,累積的光線就越多。以下視覺化圖表總結了此過程:
Exposure Time 的長度會產生以下影響:
- 亮度
- 較長的曝光會增加亮度。
- 較短的曝光會降低亮度。
- 動態模糊
- 長時間曝光會導致移動中的物件顯得模糊。
- 短時間曝光會導致移動中的物件顯得靜止。
- 影像雜訊
- 極短的曝光可能會導致影像產生雜訊(訊號較弱)。
- 較長的曝光可改善訊號 Quality,但可能會引入動態模糊。
根據您的應用,在指定 Exposure Time 時必須決定優先考量哪種影響。下表可作為參考依據。
| 目標 | 建議曝光時間 |
|---|---|
| 凍結高速移動 | 短曝光 |
| 最大化亮度 | 長曝光 |
| 穩定測量 | 平衡曝光 |
設定範例#
ExposureAuto = Off確保手動控制。ExposureTime指定於 微秒 (µs).
重點摘要#
選擇 Exposure Time 時必須隨時考量以下因素:
- 景物亮度
- 移動速度
- 影格率需求
指定正確的 Exposure Time 是建構可靠視覺系統的基本步驟。
camera.ExposureAuto.Value = "Off"
camera.ExposureTime.Value = 3000 # Value is in microseconds. Check ValueRange for valid values.
#alternatively:
camera.ExposureTimeAbs.SetValue(3000, pylon.FloatValueCorrection_ClipToRange)
Gain#
gain 控制感光元件信號在曝光後的電子放大效果。與 Exposure Time 不同,gain 不會增加擷取的光線量,而是放大現有的信號。此視覺化圖表總結了這一點:
Low gain → weak amplification → darker but cleaner image
High gain → strong amplification → brighter but noisier image
Gain 的影響#
- 亮度
- 提高 gain 會使影像變得更亮。
- 不會增加實際的信號強度,只會放大已經擷取的內容。
- 影像雜訊
- 較高的 gain 會同時放大信號與雜訊。
- 過高的 gain 會導致影像出現顆粒感。
- 細節 Quality
- 高 gain 可能會降低對比度以及細節的可見度。
設定範例#
重點摘要#
- 當您無法增加 Exposure Time 時(例如為了避免產生動態模糊),請使用 gain。
- 當影像 Quality 與信號雜訊比至關重要時,請避免過高的 gain。
一般原則:只要可能,請盡量優先選擇較長的 Exposure Time,而非較高的 gain。
ROI#
region of interest (ROI) 定義了每個影格實際讀出並傳輸的感光元件部分。依預設,ROI 的大小與感光元件相同(完整解析度)。透過更改其寬度和高度,您只需專注於場景中相關的部分。此視覺化圖表總結了這一點:
如果您縮減 ROI,指定區域以外的任何像素將不會被讀出或傳輸。
您可以使用以下工具調整 ROI: Width, Height, OffsetX 進行明確的生命週期管理即呼叫 OffsetY 參數。 Width + OffsetX 受限於 MaxWidth 進行明確的生命週期管理即呼叫 Height + OffsetY 受限於 MaxHeight.
資訊
- ROI 尺寸受硬體限制(增量、對齊)。
- 最大 ROI 等於完整感光元件解析度。
- 若要變更 ROI,必須停止影像擷取。
ROI 變更的影響#
- 增加影格率: 每個影格的資料較少,代表讀出速度更快且影格率 (fps) 更高。
- 降低頻寬: 這對於 GigE 相機而言尤為重要。
- 降低處理負載:較小的影像可實現更快的影像處理(OpenCV/AI)。
- 聚焦於相關區域:允許您忽略場景中不相關的部分。
下表可作為較小的 ROI 如何讓您的應用受益的指引。
| 使用情境 | 較小 ROI 的優勢 |
|---|---|
| 追蹤小型物件 | 更快的處理速度與更少的雜訊 |
| 高速檢測 | 提高幀率 |
| 區域內的邊緣檢測 | 減少運算量 |
設定範例#
重點摘要#
縮小 ROI 是機器視覺系統中最有效的效能提升工具之一。透過從源頭減少資料量,您可以改善以下方面:
- 傳輸量
- 延遲
- 系統擴充性
與軟體影像裁切不同,縮小 ROI 會在資料進入管線之前消除不必要的資料。
Static Defect Pixel Correction#
Defect Pixel Correction 可讓您將感測器個別像素靈敏度差異的影響降至最低。此功能並非適用於所有相機。因此,務必針對目前裝置可能不支援此功能的情況預先做好準備。
資訊
- 使用
pylon.StaticDefectPixelCorrection與camera.NodeMap. - 使用
ListType_Factory以讀取原廠提供的缺陷像素。 - 使用
ListType_User以讀取/更新使用者專屬的缺陷像素。 - 擷取
pylon.RuntimeException進行明確的生命週期管理即呼叫pylon.InvalidArgumentException適用於不支援的型號。
設定範例#
from pypylon import pylon
with pylon.InstantCamera(pylon.FirstFound) as camera:
# Read the factory defect pixel list.
factory_ok, factory_pixels = pylon.StaticDefectPixelCorrection.GetDefectPixelList(
camera.NodeMap,
[],
pylon.StaticDefectPixelCorrection.ListType_Factory,
)
# Build/update the user list as (x, y) or (x, y, type) tuples.
user_pixels = [(100, 200), (300, 400, 0)]
try:
normalize_ok, normalized_pixels = pylon.StaticDefectPixelCorrection.NormalizePixelList(
camera.NodeMap,
user_pixels,
)
set_ok, written_pixels = pylon.StaticDefectPixelCorrection.SetDefectPixelList(
camera.NodeMap,
normalized_pixels,
pylon.StaticDefectPixelCorrection.ListType_User,
)
get_ok, read_back_pixels = pylon.StaticDefectPixelCorrection.GetDefectPixelList(
camera.NodeMap,
[],
pylon.StaticDefectPixelCorrection.ListType_User,
)
except (pylon.RuntimeException, pylon.InvalidArgumentException):
# Camera does not provide this feature.
pass
重點摘要#
將靜態缺陷像素校正視為裝置相依功能:在可用時使用,在不可用時平穩降級。