algorithm - 什么是在线降尺度算法?

标签 algorithm embedded microcontroller scaling

<分区>

我正在构建一个将从模拟输入读取 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)

关于algorithm - 什么是在线降尺度算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461205/

相关文章:

c - 高效计算 (a - K)/(a + K) 并提高准确性

c - 在编译期间将数据写入特定地址

java - 估计算法运行时间的增长顺序

arrays - 具有特定值的数组

c - 寻找步进电机编程资源的初学者

java - 我可以为嵌入式设备进行普通的 Java 编程吗?

用于监视程序和控制微 Controller 的Python脚本

代码设计——状态机或程序代码

c++ - std::sort 不适用于重载 < 运算符的用户定义对象

c - 没有为初始化对象创建 copydown?