3

我可以很容易地计算出 Lanczos 中使用的 sinc(x) 曲线的值,并且我已经阅读了之前关于 Lanczos 调整大小的解释,但是对于这个领域的新手,我不明白如何实际应用它们。

要使用 lanczos 重新采样,假设您将输出和输入相互叠加,点表示像素位置的位置。对于每个输出像素位置,您从该点取一个框 +- 3 个输出像素。对于位于该框中的每个输入像素,计算该位置的 lanczos 函数的值,并将输出像素坐标中与输出位置的距离作为参数。然后,您需要通过缩放计算值来归一化计算值,使它们加起来为 1。然后将每个输入像素值与相应的缩放值相乘,并将结果加在一起以获得输出像素的值。

  1. 例如,在编程术语中“覆盖输入和输出”实际上是什么意思?
  2. 在给定的方程中 lanczos(x) = { 0 if abs(x) > 3, 1 if x == 0, else sin(x*pi)/x } x 是什么?

作为一个简单的例子,假设我有一个具有 14 个值的输入图像(即在地址 In0-In13 中): 20 25 30 35 40 45 50 45 40 35 30 25 20 15

我想将其放大 2 倍,即具有 28 个值的图像(即在地址 Out0-Out27 中)。

显然,地址 Out13 中的值将与地址 In7 中的值相似,但我实际乘以哪些值来计算 Out13 的正确值?算法中的 x 是什么?

4

1 回答 1

0

如果输入数据中的值位于 t 坐标 [0 1 2 3 ...],那么您的输出(按比例放大 2)的 t 坐标位于 [0 .5 1 1.5 2 2.5 3 ...]。因此,要获得第一个输出值,请将过滤器的中心位置设为 0,然后乘以所有输入值。然后要获得第二个输出,将过滤器居中在 1/2 并乘以所有输入值。ETC ...

于 2009-12-23T19:09:46.830 回答