Digital Shift#
這會增加影像的亮度。如果您的相機不支援 digital shift 功能,您可以使用 Gain 功能來達到類似的效果。
使用此功能#
運作原理#
將 digital shift 因數設定為 n 會對所有像素值進行 向左邏輯位移 n 位。這會產生將所有像素值乘以 2n 的效果。
如果產生的像素值大於目前 Pixel Format 的最大可能值(例如,12 位元 pixel format 的最大值為 4 095),則該值會被設為最大值。
如需詳細資訊,請參閱下方的 範例。
設定 Digital Shift#
若要設定 digital shift 因數,請輸入所需的數值 DigitalShift 參數的值。
依預設,此參數設為 0,即停用 digital shift。
範例#
範例 1:Digital Shift 設為 1,12 位元影像資料#
假設您在使用 12 位元 Pixel Format 的相機上輸入了 1 的 digital shift 因數。這會產生以下效果:
- 每個 12 位元影像資料字組中的最低有效位元都會設為 0。
- 像素值會乘以 21= 2。
- 由於最低有效位元設為 0,相機只會傳輸偶數像素值,例如 2、4、6、8、10 等。
範例 2:Digital Shift 設為 2,12 位元影像資料#
假設您在使用 12 位元 Pixel Format 的相機上輸入了 2 的 digital shift 因數。這會產生以下效果:
- 每個 12 位元影像資料字組中的最低 2 個有效位元都會設為 0。
- 像素值會乘以 22= 4。
- 由於最低兩個有效位元設為 0,相機只會傳輸每第四個像素值,例如 4、8、12、16、20 等。
範例 3:Digital Shift 設為 2,8 位元影像資料#
假設您的相機具有 12 位元的 最大像素位元深度,但目前使用的是 8 位元 pixel format。
在這種情況下,相機會先對 12 位元影像資料執行 digital shift 計算。然後,相機會捨棄 4 個最低有效位元,並傳輸 8 個最高有效位元:
資訊
在以下相機型號上,如果設定了 8 位元 pixel format,則無論最大像素位元深度為何,都會對 10 位元影像資料執行 digital shift: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 位元 Pixel Format。同時假設您其中一個原始像素值為 2 839:
如果您對此像素值套用 1 的 digital shift,產生的數值將大於 12 位元 pixel format 的最大可能值(4096 + 1024 + 512 + 32 + 8 + 4 + 2 = 5678;12 位元格式的最大值為 4 095)。在這種情況下,數值會被設為最大值,即所有位元皆設為 1:
資訊
因此,請確保針對您的成像情境套用不會過高的 Digital Shift 係數。否則,影像中的所有亮部區域都會變成白色,亦即會遺失影像資訊。
外部連結#
範例程式碼#
/* 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);
您也可以使用 pylon Viewer 來輕鬆設定參數。