Flat-Field Correction (CXP Interface Cards)#
由不均勻照明或鏡頭造成的影像不均勻現象(如 Shading Correction 或 Vignetting Correction 所修復者),可以使用平場校正來補償。
感光元件像素的不同光感應度所造成的影像不均勻現象,是由感光元件的放大器和 ADC 差異所引起的。對於較舊的 CMOS 感光元件,這可以從強烈的欄雜訊(column noise)中看出。
平場校正主要針對感光元件影像中的三種不均勻現象:
- Dark Signal Non-Uniformity (DSNU) 的發生是因為每個個別像素都可以有其自身的 offset。此效應與照明無關,取決於感光元件的溫度,並且在較長的 Exposure Time 下會更加明顯。
- Photo Response Non-Uniformity (PRNU) 是由個別像素的 gain 變化所引起的,這會導致它們對光的反應產生差異。
- 當感光元件的某些區域反應與其他區域不同時,就會發生不同感光元件區域的回應差異。這些變化通常是由感光元件的設計或特定區域間的溫度差異所引起的。在彩色相機中,這可能會導致影像某些部分出現明顯的顏色差異。
所有這些效應都可以透過平場校正來修正。Enhanced Applets 會計算基於區塊的平場校正。無法使用 Enhanced Applets 進行像素級或基於欄的平場校正。
資訊
Flat-Field Correction 也作為某些 Basler 相機上的相機功能提供。如果您的 Basler 相機支援 Flat-Field Correction,Basler 建議您使用該相機功能。如需詳細資訊,請參閱 Flat-Field Correction camera feature 文件。
此校正本身可補償這些不均勻性。這是透過減去位移值,接著進行增益來校正光源響應。
Enhanced Applets 的區塊式 Flat-Field Correction 使用下列程序:
Basler 建議不要手動計算並將數值輸入 Applet 中。請改為選擇以下三種選項之一:
- 在 pylon Viewer 中使用適用於擷取卡的 Flat-Field Correction 外掛程式
- 在 Framegrabber SDK 中計算平場校正
- 使用 VisualApplets 自訂 Flat-Field Correction 功能
在 pylon Viewer 中使用適用於擷取卡的 Flat-Field Correction 外掛程式#
Basler 在 pylon Viewer 中提供了一個外掛程式,可讓您對擷取結果套用 Flat-Field Correction (FFC)。
您可以從 Basler 網站以 ZIP 檔案格式下載 Flat-Field Correction 外掛程式。
系統需求#
若要使用 Flat-Field Correction 外掛程式,請確保符合下列安裝設定:
- 已安裝 Basler 相機。
-
電腦上已安裝 pylon 25.10。
資訊
- Flat-Field Correction 外掛程式僅適用於 pylon 25.10。
- 若要從 pylon 8 升級至 25.10:
- 解除安裝舊版本。
- 僅安裝新版本 (pylon 25.10)。
-
電腦已連接擷取卡或介面卡。
- 擷取卡或介面卡已載入 enhanced applet。
安裝 FFC 外掛程式#
- 將下載的 ZIP 檔案解壓縮。
- 尋找 EnhAppletFFC.dll 檔案。這就是 FFC 外掛程式。
- 將您在 VisualApplets 中建立的 EnhAppletFFC.dll 檔案至 pylon 安裝資料夾 Applications\x64\lib\pylonviewer\plugins.

使用外掛程式前的準備工作#
在使用 FFC 外掛程式之前,您應該先檢閱下列事項:
- 若要了解其底層原理,請參閱背景資訊:計算公式一節。
在計算校正值之前,請確保符合下列條件:
- 您的光源應盡可能均勻。
- 鏡頭光圈與對焦已正確設定。
- Exposure Time 已設定完成。
- 所有相機預先處理功能均已設定,例如類比增益(analog gain)。
- 已載入正確的 Enhanced Applet。
- 相機與 applet 中皆已設定正確的 Pixel Format。
- 相機已達到正常運作溫度。
- Applet 中未設定任何預先處理。您的圖像使用完整的 ROI。

螢幕擷取畫面顯示在 pylon Viewer 中擷取圖像。如 Line Profile 所示,圖像角落有強烈的明暗變化(shading)。此外,部分像素處於飽和狀態。這是刻意安排的,因為物件較暗的部分才是關注的重點。這也是機器視覺應用的一個實際範例。
計算平場校正值並將其套用到您的影像#
-
啟動 Flat-Field Correction 外掛程式:
- 在 pylon Viewer 中選擇相機。
- 停止所選相機的圖像擷取。
- 在 pylon Viewer 中,選擇 Tools > Flat-Field Correction (Frame Grabber)。

-
Flat-Field Correction 外掛程式隨即開啟:

-
在步驟 3. Configure the camera. 中:
- 設定要套用 Flat-Field Correction 的 ROI。如果您保留預設值,將重新計算整張圖像。
-
按一下 下一頁.
影像 計算像素偏移量 (DSNU) 頁面隨即開啟:

-
透過擷取一系列的暗電流圖像來計算偏移校正值。若要擷取暗電流圖像:
- 蓋住鏡頭並擷取圖像。
- 選擇 Calculate pixel offset。
- 按一下 Calculate Pixel Offset 按鈕。
外掛程式會顯示縮放後的影像和像素位移值。
-
按一下 下一頁.
影像 計算增益 (PRNU) 頁面隨即開啟:

-
計算增益值:
- 擷取一系列明亮的參考影像以取得增益校正值:將均勻明亮的物件(例如一張白紙)放置在鏡頭下方並擷取影像。
-
您可以選擇設定參考像素值與 Exposure Time。
資訊
為了減少彩色影像的色彩失真,請使用平均增益值作為參考像素值。
-
按一下 Calculate Gain Correction 按鈕。
因此會顯示增益校正值,當您在 View Options 下拉清單方塊中選取 Live - Gain Corrected 時,即可看到經過增益校正的影像。 - 按一下 下一頁.
影像 計算基於區塊的 Flat-Field Correction 值 頁面隨即開啟:

-
計算 Flat-Field Correction 值並將其套用到您的影像。
- 您可以選擇設定區塊大小或進行自動計算。在此範例中,影像大小為 5120 x 5120 像素,因此例如 48 x 34 像素的區塊大小總共會產生 16157 個區塊,小於可用的總區塊數 16384。
- 您可以選擇指定 Linear extension 並將 Edge handling 設定為 Pixel、Half Block 或 Block。
- 若要啟用 Calculate Correction Data - Store And Apply 按鈕,請指定計算值的儲存位置。
- 按一下 Calculate Correction Data - Store And Apply 按鈕。
- 系統會執行計算,在指定的資料夾中產生檔案,並將計算出的增益與位移值套用到您的影像。
- 在影像上方的 View Options 下拉清單方塊中,選取要在預覽中套用到影像的 FFC 值:增益值、位移值、兩者或皆不選。
- 按一下 Finish 以離開 FFC 外掛程式。
-
影像 Line Profile 現在顯示均勻的影像,且可以擷取高品質的影像。使用
FFC mode parameter來切換 FFC 的開啟或關閉狀態。
在 Framegrabber SDK 中計算平場校正#
Basler 提供 Python 指令碼,可協助您在 Framegrabber SDK 中計算並套用 Flat-Field Correction 值。
您可以從 Basler 網站以 ZIP 檔案形式下載這些指令碼。此套件包含:
- 一個適用於單色影像的指令碼
- 一個適用於彩色 (Bayer) 影像的指令碼
資訊
每次重新啟動電腦或開啟擷取卡應用程式時,都必須將 FFC 設定重新載入至擷取卡。擷取卡具備揮發性 Memory,因此無法像相機上的 User Sets 那樣儲存資料。
若要計算 Flat-Field Correction 數值,請根據您的影像路徑與參數調整 Python script:
- 擷取暗影像:
- 蓋上鏡頭並擷取暗影像。
- 將影像儲存至電腦。
- 擷取明亮參考影像(用於增益校正):
- 在鏡頭下方放置均勻明亮的物體(例如白紙)並擷取影像。
- 將影像儲存至電腦。
-
編輯 Python script:
- 在文字編輯器中開啟 script。
-
在指定區段中更新暗影像與明亮影像的路徑:
################# Calculation of pixelwise FFC coefficients for offset and gain########################## # Read dark image # Set the image path darkImage = cv2.imread("C:/.../examples/Processing/Shading/Shading2D/ImagesBlockFFC/darkImage_5120x5120_bayerBG8.bmp",-1) # Read bright image # Set the image path brightImage = cv2.imread("C:/.../examples/Processing/Shading/Shading2D/ImagesBlockFFC/brightImage_5120x5120_bayerBG8.bmp",-1) -
對於彩色影像,同時調整影像路徑下方的 Bayer 模式:
-
調整以下參數於
# set parameters:區段:您可以從強化的 applet 或 VisualApplets 設計中取得這些參數值。若要存取 applet,請在以下其中一個工具中開啟它:# set parameters: MaxNumberOfBlocksInY = 16384 MaxNumberOfBlocksInX = 3072 blocksize_x = 64 blocksize_y = 64 offsetBits = 8 # "Offset Bits must be more than the fractional bits in it!" offsetFractionalBits = 2 gainBits = 12 #"Gain Bits must be more than the fractional bits in it!" gainFractionalBits = 10 parallelism=16 w = 5120- microDisplay X
- pylon Viewer
- VisualApplets
-
儲存變更並執行 Python script。
- 該 script 會建立包含 Flat-Field Correction 所需之 gain 與 offset 值的 *.txt 檔案。這些檔案會儲存在與 Python script 相同的目錄中。
若要套用 gain 與 offset 值:
- 開啟 microDisplay X 並載入 Enhanced Applet。
-
在
FFC參數區塊中,從您產生的檔案載入 offset 與 gain 值:

-
導覽至儲存 gain 與 offset 檔案的目錄,然後選取適當的檔案。
- 針對 gain 與 offset 檔案以及影像中的每個色彩通道重複此步驟。
- 開始影像擷取。
-
在
FFC Mode參數中,選取Offset and Gain若要套用這些數值:
平場校正現在已套用至您擷取的影像。
使用 VisualApplets 自訂 Flat-Field Correction 功能#
VisualApplets 包含用於計算區塊式平場校正的設計範例。如果您需要針對應用調整此功能,而不是使用 Enhanced Applets 中的標準實作,請使用這些範例。如需詳細資訊與儲存位置,請參閱 VisualApplets Tutorial。
在 VisualApplets 中使用範例類似於使用 Enhanced Applets。請遵循以下步驟:
- 使用 Enhanced Applets 與提供的 Python 指令碼計算係數,如 Calculating Flat-Field Correction in the Framegrabber SDK 中所述。
- 在 VisualApplets 中開啟平場校正範例設計。
-
在 VisualApplets 中設定 FFC 階層方塊的靜態參數。
階層方塊會自動適應像素 Bit Width、Parallelism 和影像格式。首先,您必須設定輸入連接的參數。請務必在設定靜態參數之前執行此操作。
允許的格式為:
Bit width:8 至 16Artithmetic:unsignedParallelism:1 至 64Kernel Columns,Kernel Rows: 1Color Format:VAF_GRAYColor Flavor:FL_NONEMax. Image Width:anyMax. Image Height:any
靜態參數定義了區塊式 FFC 的精確度與 FPGA 資源使用量:
OffsetBits:定義用於偏移校正的位元數。這是整數與小數位元數的總和。OffsetFractionalBits:定義小數位元數。如需固定點數術(fixed point arithmetic)說明,請參閱章節 校正係數 Offset 與 Gain 的載入.GainBits:定義用於增益校正的位元數。這是整數與小數位元數的總和。GainFractionalBits:定義小數位元數。如需固定點數術(fixed point arithmetic)說明,請參閱章節 校正係數 Offset 與 Gain 的載入.MemoryType:選擇 UltraRAM、Block RAM 或 LUT RAM。建議使用 UltraRAM。MaxNumbrOfBlocks:選擇區塊式 FFC 使用的最大區塊數。如果您已將 URAM 選為MemoryType,則只能使用 16384 個區塊。MaxNumberOfBlocksInX:定義 X 方向的最大區塊數。通常這應該是Max. Image Width/Parallelism.MaxNumberOfBlocksInY:定義 Y 方向的最大區塊數。MaxBlockSizeInX:定義 X 方向的最大區塊大小。請為您的應用選擇合適的值。對於一般用途,您可以設定完整的影像寬度。MaxBlockSizeInY:定義 Y 方向的最大區塊大小。請為您的應用選擇合適的值。對於一般用途,您可以設定完整的影像高度。
動態 Property 可以在執行階段根據應用需求進行變更:
CoefficientsXLength:此數值需要與計算並上傳的係數檔案相符,例如您在 pylon Viewer 和 FFC 外掛程式中使用的 Enhanced Applet 的 ROI 大小。CoefficientsYLength:此數值需要與計算並上傳的係數檔案相符,例如您在 pylon Viewer 和 FFC 外掛程式中使用的 Enhanced Applet 的 ROI 大小。BlockSizeMode:選擇Manual或Auto。在自動模式下,可用的區塊將分佈在影像上。對於手動模式,可以使用下列 Property 來設定區塊大小。如果您在 pylon Viewer 中使用了 FFC 外掛程式,請複製對應的值:BlockSizeInX:定義區塊大小如果BlockSizeMode且Manual。如果您在 pylon Viewer 中使用了 FFC 外掛程式,請將對應的值複製到此 Property。BlockSizeInY:定義區塊大小如果BlockSizeMode且Manual。如果您在 pylon Viewer 中使用了 FFC 外掛程式,請將對應的值複製到此 Property。EnoughBlocksForImageSize:此唯讀 Property 表示針對給定的區塊大小和 ROI 設定,所定義的最大區塊數是否足夠。OffsetCoefficients:這是位移係數的欄位 Property。請上傳來自 FFC pylon 外掛程式的文字檔案。您可以在下列章節找到格式說明 校正係數 Offset 與 Gain 的載入.GainCoefficients:這是位移係數的欄位 Property。請上傳來自 FFC pylon 外掛程式的文字檔案。您可以在下列章節找到格式說明 校正係數 Offset 與 Gain 的載入.FlatFieldCorrectionMode:選擇是否開啟或關閉 FFC Offset 和 Gain。這可以在影像擷取期間進行。
-
可以在 VisualApplets 的設計階段,或在執行階段透過您的 SDK 應用程式(pylon API、GenApi、GenTL consumer 或 Framegrabber SDK)來設定 FFC 階層方塊的動態 Property。
以下螢幕擷取畫面顯示了如何在 VisualApplets 中使用 FFC 階層方塊及其 Property。

背景資訊:計算公式#
以下章節說明用於計算 FFC 值的公式。此資訊僅供參考。
資訊
Basler 強烈建議不要手動計算這些值,或手動將其輸入至 pylon 或 microDisplay X 中,因為這可能會導致錯誤。請改用提供的指令碼和外掛程式。
決定 Offset 和 Gain 係數#
在計算校正值之前,需要進行一些準備工作。
- 您的照明應盡可能均勻。
- 鏡頭光圈和對焦應正確設定。
- Exposure Time 也需要進行設定。
- 相機中的所有前置處理功能(例如類比增益等)都需要進行設定。
- 相機應在正常工作溫度下運作。
Offset#
計算用於校正的偏移係數遵循標準方法,並帶有一些個別差異,本節將對此進行說明。
要確定用於校正 DSNU 或任何感測器相關偏移的偏移係數,您必須獲取一張感測器接收不到任何光的相機影像,例如蓋上鏡頭蓋。理論上,感測器輸出的所有值都應該為零,然而由於 DSNU 的影響,像素值可能會具有各自的偏移。因此,所獲取的暗影代表了偏移場,即偏移係數。
由於 DSNU 會隨著相機設定和溫度而變化,因此您應該在實際條件下獲取影像,特別是關於曝光和類比增益設定。此外,應從多張影像的平均值中衍生出偏移值,以消除雜訊。
D(x, y): 位置 x,y 處多張影像的平均暗像素值Offset(x, y)=D(x, y)
Gain#
您應用程式中獲取的物件具有不同的亮度值。您必須識別影像中最亮的部位,例如白色或反光部位。曝光、光圈和照明的設定應使得這些部位接近但不飽和。(除非您刻意為之,因為您只對暗部感興趣)。
例如,您想要檢測暗背景上的亮物件。在這種情況下,請在實際展現條件下將物件放置在鏡頭前方。被檢測物件最亮的光點應接近但不飽和。例如,對於 8 位元影像,目標像素值約為 240。接下來,您需要使用亮度值與之相近的物件均勻地照明感測器。例如,這可以是一張沒有任何結構的白紙。同樣地,任何像素都不應處於飽和狀態。記錄其中一些參考影像並計算平均影像 P(x,y).
接下來,有多種方法可用於推導增益校正的參考像素值。
-
參考影像中的平均值:如果
P(x,y)中的最亮部分等於所獲取物件的最亮部分。因此,您可以使用P(x,y)的平均像素值作為參考。PMean=Mean(P(x,y)).然後,增益係數將為:
$$ Gain(x,y) = \frac{PMean}{(P(x,y)-Offset(x,y))} $$
-
使用者定義的參考值或最亮光點:如果參考影像中的平均亮度不等於所需的最高像素值,您可以自行定義參考值。這可以是影像中最亮光點的值,或者是參考物件與參考亮影像之間的差值。然後將計算增益值,以便將均勻影像的像素校正到此參考值
PRef.$$ Gain(x,y) = \frac{PRef}{(P(x,y)-Offset(x,y))} $$
在這兩個公式中,在除法之前都會減去先前確定的偏移。如果 P(x,y) 已透過兩步程序由偏移進行了校正,則不得執行此操作。
適用於 Pixel Format 的 FFC#
對於 Pixel Format,Flat-Field Correction 會在將 RAW Bayer 影像轉換為 RGB 或任何其他色彩空間之前進行處理。這提供了最高的精確度。計算校正係數是針對每個色彩分量分別進行的。作為附帶效果,Flat-Field Correction 還能進行色彩校準,因為參考影像被校正為完美的白影像。
基於區塊的平場校正定義#
當沒有足夠的 Memory 來儲存每個個別像素的校正值時,會使用基於區塊的 Flat-Field Correction。在這種情況下,影像會被分割成您可以自定義大小的區塊。每個區塊在角落處都有其自己的起始偏移和增益係數。

對於其間的所有像素,係數是使用擷取卡內部的線性插值來確定的。

這會產生非常精確的校正,但它無法校正個別像素,尤其是由個別像素變化引起的 DSNU 和 PRNU。

手動計算區塊大小與 Applet 參數值#
若要在 Applet 中使用基於區塊的 Flat-Field Correction,您必須在計算出校正值後執行兩個步驟:
- 設定區塊大小。
- 將校正係數載入至 frame grabber。
設定區塊大小#
由於您可以將任何具有不同解析度的相機連接至 frame grabber,因此 applet 的實作旨在適應不同的解析度。
所有區塊的大小都相同,但它們不需要是正方形,也就是說,高度和寬度可能不同。frame grabber 總共提供 16384 個用於 Offset 和 Gain 校正值的區塊。因此,您必須調整區塊,以便將區塊分配至影像大小。
範例:boost V boA5120-230cm 的解析度為 5120 x 4096 像素。如果您想要使用完整解析度,則必須將可用的 16384 個區塊分配給所有這些區塊。
這些區塊不一定需要是正方形。也許您的陰影在 X 方向比在 Y 方向更強烈,因此您應該在 X 方向使用較小的區塊大小,並在 Y 方向使用較大的區塊大小。
下圖顯示非正方形區塊,其中 X 方向的解析度高於 Y 方向:

若要將 16384 個區塊作為正方形區塊平均分配到整個影像上,請使用下列公式。
- 影像寬度:
W - 影像高度:
H - 區塊總數:
N
影像的總面積為:Image Area = W x H
每個區塊都是邊長為 s的正方形。一個區塊的面積為:Block Area = s2
區塊數為:
$$ N = \frac{Image\space Area}{Block\space Area} = \frac{W\times H}{s^2} $$
若要尋找 s:
$$ s = \sqrt{\frac{W\times H}{N}} $$
對於上述範例: W = 5120, H = 4096, N = 16384:
$$ s = \sqrt{\frac{5120\times 4096}{16384}} = \sqrt{1280} = 35.78\space pixels $$
並非所有區塊邊長都可以在 applets 中設定。例如,X 方向的區塊大小必須是 16 的倍數。
對於給定的範例,區塊大小會向下捨入至 Bx= 32。
若要計算區塊高度,您需要考慮非正方形區塊以充分利用可用的區塊:
s2 = X 中的區塊大小 x Y 中的區塊大小 = Bx x By
然後可以決定區塊高度為:
$$ B_y=\left \lceil\frac{W\times H}{N\times B_x}\right \rceil $$
對於上面的範例,這將是:
$$ B_y=\left \lceil\frac{5120 \times 4096}{16384 \times 32}\right \rceil = 40 \space pixels $$
實際使用的區塊數量將會是:
$$ N_{actual}= \left \lceil\frac{W}{B_x}\right \rceil \times \left \lceil\frac{H}{B_y}\right \rceil = 16384\space blocks $$
您現在可以設定 applet 參數:
FlatFieldCorrectionBlockWidth= 32FlatFieldCorrectionBlockHeight= 40

載入校正係數 Offset 和 Gain#
每個區塊需要一組四個偏移量和增益係數值 Q11,Q12,Q21,Q22。這些值是區塊邊緣的支援位置。

區塊的結束位置即為下一個區塊的起始位置。因此,當前區塊的 Q11,Q12 等於下一個水平區塊的 Q21,Q22。
以下範例顯示了在 8x6 影像大小下的 4x3 區塊大小。很明顯,結束位置與下一個區塊的起始位置重疊。此外,位於影像邊緣的區塊結束支援位置位於影像邊界之外。如果區塊大小不是影像大小的整數除數,則影像邊緣的區塊將會超出影像更遠。

- 區塊 0
- Q11 位於 x = 0, y = 0
- Q12 位於 x = 4, y = 0
- Q21 位於 x = 0, y = 3
- Q22 位於 x = 4, y = 3
- 區塊 1
- Q11 位於 x = 4, y = 0
- Q12 位於 x = 8, y = 0
- Q21 位於 x = 4, y = 3
- Q22 位於 x = 6, y = 3
- 區塊 2
- Q11 位於 x = 0, y = 3
- Q12 位於 x = 4, y = 3
- Q21 位於 x = 0, y = 6
- Q22 位於 x = 4, y = 6
- 區塊 1
- 在 x = 4、y = 3 時的 Q11
- 在 x = 8、y = 3 時的 Q12
- 在 x = 4、y = 6 時的 Q21
- 在 x = 6、y = 6 時的 Q22
Offset 與 Gain 的數值是以具有特定範圍與解析度的定點數表示。該 Applet 提供了一些資訊 Property 以供檢查範圍。

對於給定的範例,Gain 數值具有以下範圍:
$$ \left [0,2^{GainInteger} - \frac{1}{2^{GainFractional}}\right ] = \left [0,2^{2} - \frac{1}{2^{10}} \right ] = \left [0, \space 3.999\right ] $$
換句話說,該 Applet 允許高達 3.999 的增益校正。例如,像素值 50 最多可校正為 50 x 3.999 = 199。
若要將浮點數轉換為定點數,請將其乘以小數位數並將範圍限制在 [0,2GainBits - 1],其中 GainBits = GainInteger + GainFractional。
$$ Gain_{FixedPoint} = Gain_{Float} \times 2^{GainFractional} $$
定點數 Q11、Q12、Q21、Q22 會附加到每個區塊的一個大型整數值中。
$$ Block(i) = Qfix_{11}\times 2^0 + Qfix_{12} \times 2^{GainBits} + Qfix_{21} \times 2^{2\times GainBits} + Qfix_{22} \times 2^{3\times GainBits} $$
或者作為位元位移運算:
$$ Block(i) = Qfix_{11} + Qfix_{12} \ll GainBits + Qfix_{21} \ll 2\times GainBits + Qfix_{22} \ll 3\times GainBits $$
例如,浮點數:
$$ Q_{11} = 1.1, Q_{12} = 1.3, Q_{21} = 0.9, Q_{22} = 1.4 $$
使用上述解析度轉換為定點數後變為
$$ Q_{11} = 1126, Q_{12} = 1331, Q_{21} = 922, Q_{22} = 1433 $$
Applet 數值變為
$$ Q_{11} = 1126, Q_{12} = 1331, Q_{21} = 922, Q_{22} = 1433 $$
因此,Applet Property 數值變為
$$ Block(i) = 1126 + 1331 \ll 12 + 922 \ll 2\times 12 + 1433 \ll 3\times 12 = 98490484208742 $$
以十六進位表示:
$$ Block(i) = 0\times 466 + 0\times 533 \ll 12 +0\times 39A \ll 2\times 12 + 0\times 599 \ll 3\times 12 = 0\times 599\space 39A\space 533\space 466 $$