首页 > 解决方案 > 如何最好地使用 Eign 过滤和调整图像大小?

问题描述

我有一个图像,一个 uint8_ts 的二维数组。我想使用可分离过滤器调整图像大小。考虑先缩小宽度。因为原始尺寸和目标尺寸不相关,我们将为每个目标像素使用一组不同的系数。对于特定的进出尺寸,对于所有 y,我们可能有:

out(500, y) = in(673, y) * 12 + in(674, y) * 63 + in(675, y) * 25
out(501, y) =                   in(674, y) * 27 + in(675, y) * 58 + in(676, y) * 15

我如何使用 Eigen 来加快速度,例如为我矢量化它?这可以表示为矩阵乘以稀疏矩阵,维度为 in_width * out_width,其中在每一行中,in_width 值中只有 3 个非零。在实际用例中,4 到 8 通常不为零。但是那些非零值将是连续的,使用 SSE 或任何使其快速的东西会很好。

请注意,源矩阵有 8 位标量。最终结果,在缩放宽度和高度后也将是 8 位。中间矩阵(图像)和过滤器的精度可能更好,比如 16 位。但即使它们是 8 位,在相乘时,我们也需要取乘积的最高有效位,而不是最低有效位。

难道这离Eigen能做的太远了吗?这种卷积,每个像素的内核都不同(只是因为输出大小不是输入大小的整数倍),似乎很常见。

标签: signal-processingeigen

解决方案


推荐阅读