OpenCV cv::resize() 可以改变图像的最小值和最大值吗? (使用 INTER_LINEAR 方法)

Can OpenCV cv::resize() change the min and max values of the image? (Using INTER_LINEAR method)

假设我有一个灰度图像(640 × 480 尺寸),最小像素强度 = 23,最大强度 = 245。

如果我使用 cv::resize()INTER_LINEAR 将其调整为 1920×1080,最小和最大强度会改变吗?我的最小强度变成了 25,最大强度变成了 247。有没有可能导致这个的错误用法?

是否可以限制 cv::resize 仅在最小最大值内调整大小?

我尝试在调整大小后使用 NORM_MINMAX 和原始最小最大值对图像进行标准化,但结果看起来并不相同。我没有使用 INTER_NEAREST 的选项。看起来特别模糊。

我想保留原始最小最大值但使用 INTER_LINEAR 调整大小。可能吗?

不,在我看来,使用任何使用插值的方法都不可能保持 min/max 值。请参阅 Bilinear interpolation 了解更多信息并了解为什么 min/max 值可能不再出现在调整大小的图像中。

如果您想保留原始 min/max,您将不得不 post 手动处理 并且不能保证 视觉效果会很好。

可能的解决方案:

  • 一张图片调整大小INTER_LINEAR
  • 另一个 INTER_NEAREST
  • 融合两个图像:
    • I_res(i,j)=I_near(i,j)I_near(i,j)==min or max
    • I_res(i,j)=I_linear(i,j)否则

但是这样一来,您就弄乱了用于进行线性插值的公式。