Digital Shift#
這會提高影像的亮度。如果您的相機不支援「數位偏移」功能,您可以使用「增益」功能來達到類似的效果。
使用功能#
運作原理#
將數位移位係數設定為n,會使所有像素值進行n 位的邏輯左移。此操作的效果是將所有像素值乘以2n。
若計算出的像素值大於當前像素格式所能達到的最大值(例如,對於 12 位元像素格式而言為 4 095),則該值將被設定為最大值。
如需更多資訊,請參閱以下範例。
設定Digital Shift#
要設定數位變速係數,請輸入該參數的目標值: DigitalShift 參數中選擇性地指定 HTML 記錄檔 (*.html) 的路徑與檔名。
預設情況下,此參數設定為 0,也就是說,數位移位功能已停用。
範例#
範例 1:Digital Shift × 1,12 位元影像資料#
假設您在一部採用 12位元像素格式的相機上,輸入了數位偏移係數 1。這會產生以下效果:
- 每個 12 位元影像資料字中的最低有效位元均設為 0。
- 將像素值乘以21 後等於 2。
- 由於最低有效位元被設為 0,因此相機僅傳輸偶數像素值,例如 2、4、6、8、10 等。
範例 2:Digital Shift 乘以 2,12 位元影像資料#
假設您在一部採用 12位元像素格式的相機上,輸入了 2 的數位偏移係數。這會產生以下效果:
- 每個 12 位元影像資料字中,最低的 2 個有效位元均設為 0。
- 將像素值乘以22 後等於 4。
- 由於最低兩位元被設為 0,因此相機僅傳輸每第四個像素的值,例如 4、8、12、16、20,以此類推。
範例 3:Digital Shift × 2,8 位元影像資料#
假設您的相機最大像素位元深度為 12 位元,但目前使用的是 8 位元像素格式。
在此情況下,相機首先對 12 位元影像資料進行數位位移運算。接著,相機捨棄最低 4 位元,並傳輸最高 8 位元:
資訊
在以下相機型號中,若設定為 8 位元像素格式,則無論最大像素位元深度為何,系統都會對 10 位元影像資料進行數位位移:acA720-290gm/gc、acA1440-73gm/gc、acA1920-40gm/gc、acA1920-50gm/gc、 acA1440-220um/uc、acA1920-40um/uc、acA1920-155um/uc、acA2040-120um/uc、acA2440-75um/uc、acA4096-40um/uc、acA4112-30um/uc。
範例 4:Digital Shift 乘以 1,12 位元影像資料,高值#
假設您的相機採用 12位元像素格式。另假設原始像素值之一為 2 839:
若對此像素值進行 1 的數位左移,所得值將大於 12 位元像素格式的最大可能值(4096 + 1024 + 512 + 32 + 8 + 4 + 2 = 5678;12 位元格式的最大值:4 095)。 在此情況下,該值將被設定為最大值,也就是說所有位元都會被設定為 1:
資訊
因此,請務必確保所套用的數位偏移係數不會過高,以配合您的成像情境。否則,影像中的所有亮部區域都會被設定為白色,也就是說,影像資訊將會遺失。
外部連結#
範例程式碼#
/* 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 */
/* Disable digital shift */
errRes = PylonDeviceSetIntegerFeature(hdev, "DigitalShift", 0);
CHECK(errRes);
/* Enable digital shift by 2 */
errRes = PylonDeviceSetIntegerFeature(hdev, "DigitalShift", 2);
CHECK(errRes);
您也可以 use the pylon Viewer 來輕鬆設定參數。