image - 如何选择图像插值方法? (Emgu/OpenCV)

标签 image opencv interpolation emgucv

Emgu(OpenCV 的 .net 包装器)提供的图像大小调整功能可以使用 any one of four interpolation methods :

  1. CV_INTER_NN(默认)
  2. CV_INTER_LINEAR
  3. CV_INTER_CUBIC
  4. 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/

相关文章:

c# - 尝试以编程方式将图像添加到资源。设置图片源时出现System.ArgumentException

java - 将按钮放置在图像顶部

colors - icCube - 基于最小值和最大值插值 RGBColors?

c# - 是否可以更改 WPF 图像控件中图像插值的质量?

python - 如何在 matplotlib 中使用自定义影线填充多边形?

image - 将特定的 RGB 颜色分配给 3d 网格/表面/点

c++ - 查找图的最小割/最大流量

c++ - 计算两个梯形的 'percentage matched'的最快方法

opencv - Gstreamer Opencv 后端实际上不支持此编解码器

python - python中的对数插值