当输入图像大小不是8的比例时如何实现dct?
How to implement dct when the input image size is not a scale of 8?
我了解到,如果需要在大小为 (H, W) 的图像上实现 dct,则需要大小为 (8, 8) 的矩阵 A,并且需要使用此 A 来计算图像上的 (8, 8) 区域 F。这意味着如果图像数组是 m,则需要首先计算 m[:8, :8],然后是 m[8:16, 8:16],依此类推。
当输入图像大小不是 8 的比例时,我如何实现此 dct。例如,当图像大小为 (12, 12) 不能容纳两个 (8, 8) windows,如何我可以实施 dct 吗?我试过opencv,发现opencv可以应对这种场景,但不知道它是如何实现的。
8x8 在规范中被称为 "Minimum Coded Unit" (MCU),尽管视频爱好者称它们为 "macroblocks".
较差的实现将填充零 - 这可能会导致不良影响。
如果向右填充则从左侧重复前一个像素,或者如果向下填充则从上方重复前一个像素,则更好的实现填充以填充。
请注意,只能填充图像的右侧和底部。
我了解到,如果需要在大小为 (H, W) 的图像上实现 dct,则需要大小为 (8, 8) 的矩阵 A,并且需要使用此 A 来计算图像上的 (8, 8) 区域 F。这意味着如果图像数组是 m,则需要首先计算 m[:8, :8],然后是 m[8:16, 8:16],依此类推。
当输入图像大小不是 8 的比例时,我如何实现此 dct。例如,当图像大小为 (12, 12) 不能容纳两个 (8, 8) windows,如何我可以实施 dct 吗?我试过opencv,发现opencv可以应对这种场景,但不知道它是如何实现的。
8x8 在规范中被称为 "Minimum Coded Unit" (MCU),尽管视频爱好者称它们为 "macroblocks".
较差的实现将填充零 - 这可能会导致不良影响。
如果向右填充则从左侧重复前一个像素,或者如果向下填充则从上方重复前一个像素,则更好的实现填充以填充。
请注意,只能填充图像的右侧和底部。