图像缩放需要哪些参数和端口
文章目录
- 1.图像缩放参数
- (1)颜色分量位宽DATA_BW
- (2)分量通道数NUM_CH
- (3)每时钟像素数NUM_PPC
- (4)缩放算法
- (5)输入最大宽度
- (6)输出最大宽度
- (7)输入最大高度
- (8)输出最大高度
- 2.图像缩放端口
- (1)输入图像宽度
- (2)输入图像高度
- (3)输入图像有效区宽度
- (4)输入图像有效区高度
- (5)输入图像水平偏移
- (6)输入图像垂直偏移
- (7)输出图像宽度
- (8)输出图像高度
- (9)水平缩放因子HSF
- (10)垂直缩放因子VSF
- (11)水平初始相位HIPHASE
- (12)垂直初始相位VIPHASE
视频缩放功能是将输入图像从一种分辨率转换到另一种分辨率输出,同时满足视频实时输入实时输出的要求。如果用FPGA实现该功能,需要涉及分辨率,缩放算法,数据位宽等等多种可变信息。那么该如何设置参数和端口,举例如下图所示。参数可配置,但不能动态修改。而端口可以动态修改,实时可变。
1.图像缩放参数
用FPGA实现的缩放功能,参数在生成模块时是可以配置的,但生成后就固定,不可以动态修改。参数表示的信息对实现缩放功能的资源,架构也都会有影响,那么以下信息适合用参数表示。
(1)颜色分量位宽DATA_BW
图像一般用RGB或YC444格式表示,每个颜色分量R,G,B,或者亮度Y和色度Cb,Cr表示的数据位宽,比如8bit,10bit,12bit等等。
(2)分量通道数NUM_CH
比如只有一个亮度分量,通道数就为1。或者有R,G,B分量,通道数就为3。
(3)每时钟像素数NUM_PPC
通常情况,1个时钟就1个像素,但在大分辨率下,时钟频率过高,就采取降时钟,扩位宽的方式处理,就出现1个时钟2个像素,或1个时钟4个像素情况。用Pixel Per Clock(PPC,每时钟像素)表示。
(4)缩放算法
不同的缩放算法,最近邻,双线性,双立方,lanczos等等,对设计架构影响比较大,所以一般用参数表示。
(5)输入最大宽度
决定了输入一行图像缓存的深度,也就决定了RAM资源的使用量,还有表示分辨率的bit位宽。
(6)输出最大宽度
决定了输出一行图像缓存的深度,也决定了RAM资源的使用量,还有表示分辨率的bit位宽。
(7)输入最大高度
对RAM资源的使用量不影响,但影响表示分辨率的bit位宽。
(8)输出最大高度
对RAM资源的使用量不影响,但影响表示分辨率的bit位宽。
2.图像缩放端口
端口与参数不同,在生成之后运行时也可以动态修改,而且端口信息的改变对缩放功能的资源,架构不会有影响。那么以下信息适合用端口表示。
(1)输入图像宽度
表示输入图像水平分辨率。比如1920x1080分辨率的1920值。
(2)输入图像高度
表示输入图像垂直分辨率。比如1920x1080分辨率的1080值。
(3)输入图像有效区宽度
比如输入图像1924x1084分辨率,但有效区为1920x1080,其中的1920值。为什么会有这种需求,因为大图像分块处理时,边缘处需扩展数据处理,这样才能保证缩放后拼接边缘过渡平滑。扩展处理时,有效区就与实际输入分辨率有差别。
(4)输入图像有效区高度
比如输入图像1924x1084分辨率,但有效区为1920x1080,其中的1080值。
(5)输入图像水平偏移
比如输入图像1924x1084分辨率,水平起始位置为4,即水平偏移为4。
(6)输入图像垂直偏移
比如输入图像1924x1084分辨率,垂直起始位置为4,即垂直偏移为4。
(7)输出图像宽度
表示缩放后输出图像水平分辨率,比如2560x1440分辨率的2560值。
(8)输出图像高度
表示缩放后输出图像垂直分辨率,比如2560x1440分辨率的1440值。
(9)水平缩放因子HSF
也叫水平插值步进,计算方法通常是用(vin_hor-1)/(vout_hor-1),再乘以放大比例,通常是65536,转成整数。
(10)垂直缩放因子VSF
也叫垂直插值步进,计算方法通常是用(vin_verr-1)/(vout_ver-1),再乘以放大比例,通常是65536,转成整数。
(11)水平初始相位HIPHASE
当做图像分块处理后再拼接时,缩放水平起始位置相位。计算方法,用水平缩放因子HSF乘以水平起始位置到有效区起始点距离HWIDTH,再对65536取模,即水平初始相位HIPHASE = (HSF*HWIDTH) % 65536。
(12)垂直初始相位VIPHASE
当做图像分块处理后再拼接时,缩放垂直起始位置相位。计算方法,用垂直缩放因子VSF乘以水平起始位置到有效区起始点距离VHEIGHT,再对65536取模,即水平初始相位VIPHASE = (VSF*VHEIGHT) % 65536。
这里只列了一些常用的参数和端口,还有一些如系数位宽,相位数,lanczos的Tap数等并没有列出,这些往往是对图像质量有更高的要求时才会使用。
