Emgu(OpenCV 的 .net 包装器)提供的图像大小调整功能可以使用 any one of four interpolation methods :
- CV_INTER_NN(默认)
- CV_INTER_LINEAR
- CV_INTER_CUBIC
- CV_INTER_AREA
我大致了解线性插值,但只能猜测三次或面积是做什么的。我怀疑 NN 代表最近的邻居,但我可能错了。
我调整图像大小的原因是减少像素数量(它们将在某些时候迭代)同时保持它们的代表性。我提到这一点是因为在我看来,插值是实现这一目的的核心 - 因此获得正确的类型应该非常重要。
那么我的问题是,每种插值方法的优缺点是什么?它们有何不同,我应该使用哪一个?
最佳答案
最近的邻居将尽可能快,但在调整大小时会丢失大量信息。
线性插值速度较慢,但不会导致信息丢失除非您正在缩小图像(您正在缩小图像)。
三次插值(实际上可能是“双三次”)使用包含多个相邻像素的许多可能公式之一。这对于缩小图像来说要好得多,但是在不丢失信息的情况下可以缩小多少仍然是有限的。根据算法,您可能可以将图像缩小 50% 或 75%。这种方法的主要缺点是速度要慢得多。
不确定“面积”是什么 - 它实际上可能是“双三次”。此设置很可能会为您提供最佳结果(在信息丢失/外观方面),但代价是处理时间最长。
更新:此链接提供了更多详细信息(包括您列表中未包含的第五种类型):
http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=resize#resize
关于image - 如何选择图像插值方法? (Emgu/OpenCV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112364/