跳至內容
測試伺服器
開發伺服器

Configuring Camera Parameters#

本主題介紹了部分最常用的參數說明。

Exposure Time#

曝光時間決定了相機感光元件在每幀畫面中曝光的時間長短。這是影像擷取過程中最重要的參數之一,因為它會直接影響影像的亮度、動態模糊以及訊號品質。

影響Exposure Time#

在曝光過程中,感光元件會收集光子並將其轉換為電訊號。曝光時間越長,累積的光量就越多。此圖示概括了這一點:

Short exposure → less light → darker image
Long exposure  → more light → brighter image

曝光時間的長短會產生以下影響:

  • 亮度
    • 較長的曝光時間會提高亮度。
    • 曝光時間越短,亮度就越低。
  • 動態模糊
    • 長時間曝光會導致移動的物體呈現模糊狀態。
    • 短曝光時間會使移動的物體看起來彷彿靜止不動。
  • 影像雜訊
    • 曝光時間過短可能會導致影像出現雜訊(訊號微弱)。
    • 較長的曝光時間可提升訊號品質,但可能會造成動態模糊。

根據您的應用情境,在設定曝光時間時,必須決定應優先考量哪種效果。下表可供參考。

目標 建議曝光值
凍結快動作 短曝光
將亮度調至最高 長曝光
穩定的測量 均衡的曝光

設定範例#

camera.ExposureAuto.Value = "Off"
camera.ExposureTime.Value = 3000  # Value, usually in microseconds
  • ExposureAuto = Off 確保可進行手動控制。
  • ExposureTime 在 微秒 (µs).

重點摘要#

選擇曝光時間時,必須始終根據以下因素來決定:

  • 場景亮度
  • 運動速度
  • 幀率要求

設定正確的曝光時間,是建置可靠視覺系統的關鍵步驟。

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#

增益控制的是曝光後感測器訊號的電子放大程度。與曝光時間不同,增益並不會增加所擷取的光量,而是放大現有的訊號。以下圖解對此進行了總結:

Low gain  → weak amplification → darker but cleaner image
High gain → strong amplification → brighter but noisier image

增益的影響#

  • 亮度
    • 提高增益會使影像更明亮。
    • 這並不會增加實際的訊號強度,它只是放大已經接收到的訊號罷了。
  • 影像雜訊
    • 較高的增益會同時放大訊號和雜訊。
    • 過高的增益會導致影像出現顆粒感。
  • 詳細資訊Quality
    • 高增益可能會降低對比度,並影響細部細節的清晰度。

設定範例#

camera.GainAuto.Value = "Off"
camera.Gain.Value = 5

重點摘要#

  • 當無法延長曝光時間時(例如,因擔心造成運動模糊),請使用增益。
  • 當影像品質與信噪比至關重要時,應避免使用過高的增益。

一般原則:只要可能,應優先選擇較長的曝光時間,而非較高的增益。

ROI#

感興趣區域(ROI)定義了每幀畫面中實際被讀出並傳輸的感測器部分。預設情況下,ROI 的大小與感測器相同(全解析度)。透過調整其寬度和高度,您可以僅聚焦於場景中的相關部分。此視覺化圖示對此進行了總結:

Full sensor → large image → more data
Part of the sensor → cropped image → less data

若降低 ROI,指定區域外的任何像素將不會被讀出或傳輸。

您可以使用 Width, Height, OffsetX 進行明確的生命週期管理即呼叫 OffsetY 參數。 Width + OffsetX 受到以下因素的限制: MaxWidth 進行明確的生命週期管理即呼叫 Height + OffsetY 受……限制 MaxHeight.

資訊

  • ROI 的尺寸受硬體限制(增量、對齊)。
  • 最高投資報酬率等於感測器的完整解析度。
  • 若要變更 ROI,必須停止影像擷取。

ROI 變化的影響#

  • 幀率提升:每幀的資料量減少,意味著讀出速度更快,幀率(fps)也更高。
  • 頻寬降低:這對 GigE 攝影機而言尤為重要。
  • 降低處理負載:較小的影像可加快影像處理速度(OpenCV/AI)。
  • 聚焦相關區域:讓您能夠忽略畫面中不相關的部分。

下表可作為參考,說明較小的 ROI 如何為您的應用程式帶來好處。

使用情境 較低投資報酬率(ROI)的優勢
追蹤小型物體 處理速度更快,雜訊更少
高速檢測 提高幀率
區域內的邊緣偵測 減少運算量

設定範例#

camera.StopGrabbing()

camera.Width.Value = 640
camera.Height.Value = 480

camera.StartGrabbing()

重點摘要#

降低 ROI 是機器視覺系統中最有效的效能優化工具之一。透過在源頭減少資料量,您能改善以下幾個方面:

  • 吞吐量
  • 延遲
  • 系統可擴展性

與透過軟體裁切影像不同,縮小感測區域(ROI)能在資料進入處理流程之前,先剔除不必要的数据。

靜態缺陷像素修正#

透過缺陷像素校正功能,您可以將感光元件中各像素靈敏度差異所造成的影響降至最低。並非所有相機都具備此功能。因此,必須預先做好準備,以防當前裝置不具備此功能。

資訊

  • 使用 pylon.StaticDefectPixelCorrection 與 camera.NodeMap.
  • 使用 ListType_Factory 用以讀取廠方提供的缺陷像素。
  • 使用 ListType_User 用以讀取/更新特定使用者的缺陷像素。
  • Catch 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

重點摘要#

將靜態缺陷像素校正視為一項取決於裝置的功能:若功能可用則加以運用;若不可用,則應平穩地降低效能。