将2D整数(与图像相关)的大小调整为特定大小?

时间:2017-01-06 00:19:55

标签: c++ arrays image vector

我有一个2D数组如下:

255 255 255 255 255
255 128 128 128 255
255 128 255 255 255
255 128 128 128 255
255 255 255 255 255

上面的数字代表图像的RGB值(R = G = B,灰度图像)。在这种情况下,它是一个5x5像素的字母“C”。

我想将这个5x5数组调整为其他尺寸,保持纵横比。转换为20x20阵列很简单,因为1个数组元素的宽度和高度都是2倍:

255

becomes

255 255
255 255

但是,如果我想要一个任意大小,比如32x32怎么办?图像处理程序使用哪些方法来调整图像大小?强调:纵横比保持不变。

澄清一下:我只需要缩放2D数组并保持一定的保真度。虽然看起来如此,但我没有使用图像,但使用图像缩放的概念可能很有用(?)。

2 个答案:

答案 0 :(得分:1)

您可以通过多种方式调整图像大小,通常称为插值抽取(如果您分别在尺寸上缩小或缩小尺寸)处理申请。 Boost GIL正是您正在寻找的。否则,您可以尝试重写自己的插值函数。在你的情况下,没有必要重新发明轮子,应该看看Boost。

答案 1 :(得分:0)

最简单的路线是最近邻采样。大量的教程:

http://tech-algorithm.com/articles/nearest-neighbor-image-scaling/

最近邻可用于将图像(调整大小后)缩放到任何大小。因此,10x10图片可能会成为50x34图片。但它看起来很愚蠢......