我有一个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数组并保持一定的保真度。虽然看起来如此,但我没有使用图像,但使用图像缩放的概念可能很有用(?)。
答案 0 :(得分:1)
您可以通过多种方式调整图像大小,通常称为插值或抽取(如果您分别在尺寸上缩小或缩小尺寸)处理申请。 Boost GIL正是您正在寻找的。否则,您可以尝试重写自己的插值函数。在你的情况下,没有必要重新发明轮子,应该看看Boost。
答案 1 :(得分:0)
最简单的路线是最近邻采样。大量的教程:
http://tech-algorithm.com/articles/nearest-neighbor-image-scaling/
最近邻可用于将图像(调整大小后)缩放到任何大小。因此,10x10
图片可能会成为50x34
图片。但它看起来很愚蠢......