gpt4 book ai didi

image - 理解最近邻图像大小调整算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:06 25 4
gpt4 key购买 nike

我正在阅读 nearest-neighbor interpolation并且不确定我是否理解它是如何工作的。以下是对算法的正确解释吗?假设我们想将图像拉伸(stretch) 3 倍,从 2 x 2 大小的图像到 6 x 6:

Map every pixel value in the old image to its location in the resized image. 
Refer to these as 'landmarks'.
- For example, (0,0) -> (0,0)
(0,1) -> (0,3)
...
Starting at (0,1), for every pixel in the resized image that doesn't have a value,
assign to that pixel the value of the closest landmark.

这是正确的吗?

最佳答案

我将对您的“地标”的定位进行小幅调整。不是把第一个放在 (0,0),而是放在 (1,1):

_ _ _ _ _ _
_ x _ _ x _
_ _ _ _ _ _
_ _ _ _ _ _
_ x _ _ x _
_ _ _ _ _ _

x标记地标,_字符为未定义像素。
我们现在在 (1,1)、(1,4)、(4,1) 和 (4,4) 处有地标。我们如何知道原始图像中的哪些像素对应于这些地标?最简单的方法是使用整数除法除以比例因子,在本例中为 3:

1 div 3 = 0
4 div 3 = 1

我们现在可以将每个地标像素映射到原始图像中的相应像素:

landmark    original
(1,1) => (0,0)
(1,4) => (0,1)
(4,1) => (1,0)
(4,4) => (1,1)

现在,如果我们对调整大小后的图像中的其他像素进行尝试,会发生什么情况?例如,如果我们采用像素 (2,3),我们能否确定它最接近原始图像中的哪个像素?嗯,

2 mod 3 = 0
3 mod 3 = 1

所以原始图像中对应的像素点是(0,1)。这是对应于我们的地标 (1,4) 的同一个像素,因此那一定是我们最近的邻居。我们使用新像素调整大小的图像将如下所示:

_ _ _ _ _ _
_ x _ _ x _
_ _ _ _ _ _
_ _ @ _ _ _
_ @ _ _ x _
_ _ _ _ _ _

我已将新像素的符号和也对应于地标 (0,1) 的地标像素更改为 @
但是我们在没有引用地标的情况下计算了对应于我们的新像素的原始位置,所以我们真的需要那个地标吗?好吧,不,我们没有。我们所要做的就是使用整数除法(或 floor 或 truncate 或任何您的编程语言称之为;但不是圆形)将每个像素坐标除以比例因子。这为我们提供了以下伪代码:

Input:  Original[][] - the original image as a 2-dimensional array
k - the scalar scaling factor
Output: Resized[][] - the resized image

for all elements (i,j) in Resized
Resized[i][j] := Original[i div k][j div k]
end

事实上,如果您使用浮点除法和 truncate/floor,您可以扩展它以接受非整数缩放因子 >= 1。

关于image - 理解最近邻图像大小调整算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com