Scaling#
Scaling 功能類似於 Pixel Beyond 功能,該功能僅適用於 ace 2 相機。
使用功能#
運作原理#
進行 scaling 時,影像尺寸會透過插補按比例縮小。系統會根據需要相加並平均像素值,以將其對應至縮放後影像的像素。這會提高訊噪比。
Scaling 是由您所選擇的 scaling factor 來控制。水平與垂直方向會套用相同的因數。當因數為 1.0 時,影像尺寸維持不變。小於 1.0 的因數會使影像寬度和高度縮小。
設定 Scaling#
若要設定 scaling:
- 請確保相機處於閒置狀態,也就是未擷取影像。
- 將 binning 和 decimation 因數設為 1,藉此停用 Decimation 與 Binning。
- 將相機中的
ScalingHorizontal參數設為所需的 scaling 值.
資訊
- 變更
ScalingHorizontal參數值會自動調整ScalingVertical參數值。這樣可維持原有的高寬比。 - 使用 Scaling 功能時,Binning 與 Decimation 將無法使用。
Scaling 數值#
您可以選擇從 0.125 到 1 的 scaling factor。不過,只有 112 個離散值可供使用。如果您輸入無法使用的值,浮點控制項會自動向上或向下捨入至最接近的可用餐數。
若要計算有效值,請使用下列公式:16/x,其中 x = 16 到 128 之間的任何自然數。
| 範例 | 產生的 Scaling Factor | 後果 |
|---|---|---|
| 16 / 16 | 1.0 | 預設設定。Scaling 已停用。原始影像尺寸保持不變。 Binning 與 Decimation 可用。 |
| 16 / 17 | 0.941 | |
| 16 / 18 | 0.888 | |
| 以此類推 | … | |
| 16 / 32 | 0.5 | 影像尺寸縮小一半(因數 2)。 |
| 16 / 64 | 0.25 | 影像尺寸縮小因數 4。 |
| 以此類推 | … | |
| 16 / 128 | 0.125 | 影像大小會縮小 8 倍(最大縮小幅度)。 |
使用 Scaling 時的注意事項#
對 ROI 設定的影響#
當您使用 Scaling 時,image ROI 和 auto function ROI 設定是指修改後影像的縮放行與列,而非感測器的實體行與列。
例如,假設您使用的相機配備 3 840 x 2 748 感測器。在完整解析度下套用 0.5 的 Scaling 因子。在這種情況下,最大 ROI 寬度為 1918,最大 ROI 高度為 1372。ROI 寬度和高度參數會自動調整。同理,您在啟用 Scaling 之前定義的任何位移 (Offsets) 也會自動調整。
當停用 Scaling 時,ROI 會再次增大,但可能會比原本的 ROI 小。
資訊
Basler 建議您在停用 Scaling 後務必檢查 image ROI 設定,並在必要時手動將 image ROI 回復至所需的尺寸與位置。
降低解析度#
使用 Scaling 會有效地降低相機影像感測器的解析度。例如,如果您在配備 3 840 x 2 748 感測器的相機上設定 0.25 的 Scaling 因子,相機的有效解析度會降低至 954 x 682。
捨入損失#
在 Scaling 過程中,影像尺寸會頻繁進行四捨五入。如果您重複變更 Scaling 因子,四捨五入的效應會累積。當返回先前的影像大小時,因四捨五入而遺失的尺寸將無法復原。
為避免累積的四捨五入損失,請手動復原先前的影像大小。或者,返回「參考」影像大小(例如完整解析度),並手動指定影像大小以避免四捨五入誤差。
範例程式碼#
ace Classic/U/L GigE 相機#
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK; /* Return value of pylon methods */
/* Set horizontal scaling to 0.5 */
errRes = PylonDeviceSetFloatFeature(hdev, "ScalingHorizontalAbs", 0.5);
CHECK(errRes);
/* Disable scaling */
errRes = PylonDeviceSetIntegerFeature(hdev, "ScalingHorizontalAbs", 1);
CHECK(errRes);
其他相機#
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK; /* Return value of pylon methods */
/* Set horizontal scaling to 0.5 */
errRes = PylonDeviceSetFloatFeature(hdev, "ScalingHorizontal", 0.5);
CHECK(errRes);
/* Disable scaling */
errRes = PylonDeviceSetIntegerFeature(hdev, "ScalingHorizontal", 1);
CHECK(errRes);
您也可以 use the pylon Viewer 來輕鬆設定參數。