我正在构建一个从模拟输入读取PAL / NTSC(576i,480i)帧的电路。微控制器具有32 kB的存储器。我的目标是将输入缩小到32x16分辨率,并将此图像转发到LED矩阵。
PAL帧可以占用~400 kB的内存。所以我想在网上缩小规模。读取18个像素,抽取为1.读取45行,抽取为1.峰值存储器使用:45 x 32 = 1.44 kB(等待抽取的45个抽取行)。
问题:除了上述天真的算法之外,还有哪些其他在线图像缩小算法?谷歌搜索是非常困难的,因为正在找到在线服务(PDF调整大小等)
答案 0 :(得分:-1)
请注意,所提到的格式是隔行扫描的,所以你先读取第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)