Image Crop數據解算主要在FillFrameZoomWindow函數中完成。本文關注點為IFE輸出到IPE進行的圖像裁剪與縮放。
IPE node接過IFE送來的圖像數據時可以對圖像數據進行進一步的裁剪縮放。主要涉及兩個方面的cropInfo調整:
- EIS對cropInfo調整
- FOVC對cropInfo調整
- ScaleRatio計算
1.EIS相關
EIS處理分為EIS和SW EIS兩種。經前驅node IFE處理后,IPE根據EIS的設置進行裁剪調整。
1.1 SW EIS模式時
圖1-1 SW EIS對裁剪的調整
ImageInfo為請求的圖像信息描述,SW EIS中ImageDimension會影響cropInfo。由於ImageDimension是相對於輸出Image的size,所以需要將ImageDimension與ImageIndo的關系映射到cropInfo中,即得到右側實現cropInfo。調整后的cropInfo和ImageDimension的關系如下:
cropInfoW = (adjustedFullW - ImageDimensionW) x cropInfoW/adjustedFullW
= cropInfoW - ImageDimensionW x cropInfoW / adjustedFullW
= cropInfoW - ImageDimensionW x (cropInfoW / adjustedFullW)
cropInfo.left = (adjustedFullW - ImageDimensionW) x (cropInfo.left / adjustedFullW)
= cropInfo.left - ImageDimension x (cropInfo.left / adjustedFullW)
其中cropInfoW / adjustedFullW為調整的輸入於輸出比。類似的cropInfo.left / adjustedFullW有類似關系。
1.2 EIS對CropInfo的調整
圖1-2 EIS對CropInfo的調整
其中去StabLizationMargin階段能會造成cropInfo數據不對齊,由於平台要求16字節對齊,所以這里沒有表示對齊調整。EIS和SW EIS對cropInfo即裁剪區域進行調整時所涉及的ImageDimesion和StablizationMargin均是對輸出圖像的size,所以需要轉換成對cropInfo。
代碼實現如下:
2.FOVC
圖2-1 FOVC對CropInfo的調整
繼EIS調整后,根據PropertyIDFOVCFrameInfo屬性中fovcFactor對CropInfo進一步進行調整,得到圖中淺藍色區域。
3.Ratio計算
ScaleRatio作為輸入參數同Image一起設置給IPE,然后IPE根據設置完成Image的縮放&裁剪。
這里ScaleRatio包含:preScaleRatio(預縮放比), IFE時;postScaleRatio,IPE將要做的縮放比例。
計算ScaleRatio時會根據是否是超分辨率SR得到兩組不同的ScaleRatio,
3.1非SR
preScaleRatio從IFEOuput中獲得(IFEScalerOutput->scalingFactor)。
postScaleRatio為width或者height變倍比中較小的比值,即當w/h變倍比不同時按都滿足計算,然后再裁剪成請求size。
3.2SR
GeoLib也要參與計算。。。不知道GeoLib什么鬼,先跳過。
preScaleRatio =