<分区>
我正在构建一个将从模拟输入读取 PAL/NTSC(576i、480i)帧的电路。微 Controller 具有 32 kB 的内存。我的目标是将输入缩小到 32x16 分辨率,并将此图像转发到 LED 矩阵。
PAL 帧可以占用大约 400 kB 的内存。所以我想到了在线缩小比例。读取 18 个像素,抽取为 1。读取 45 行,抽取为 1。峰值内存使用:45 x 32 = 1.44 kB(45 个抽取行等待抽取)。
问题:除了上述朴素的算法之外,还有哪些在线图像缩小算法?谷歌搜索非常困难,因为正在寻找在线服务(PDF 调整大小等)
请注意,提到的格式是交错的,因此您首先阅读第 0、2、4.. 行(第一个半帧),然后是第 1、3、.. 行(第二个半帧)。
如果您在生成的单元格中使用简单的像素值平均(我怀疑它对于如此小的输出矩阵是可行的),则创建输出数组(16x32=512 个条目)并对每个单元格的适当值求和。并且您需要为单个输入行(768 或 640 个条目)提供缓冲区。
x_coeff = input_width / out_width
y_coeff = input_height / out_height
out_y = inputrow / y_coeff
for (inputcol = 0..input_width - 1)
out_x = inputcol / x_coeff
out_array[out_y][out_x] += input_line[inputcol]
inputrow = inputrow + 2
if (inputrow = input_height)
inputrow = 1
if (inputrow > input_height)
inputrow = 0
divide out_array[][] entries by ( x_coeff * y_coeff)