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)
否则
但是这样一来,您就弄乱了用于进行线性插值的公式。
假设我有一个灰度图像(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)
否则
但是这样一来,您就弄乱了用于进行线性插值的公式。