gpt4 book ai didi

matlab - 为什么 OpenCV cv2.resize 给出的答案与 MATLAB imresize 不同?

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:56 40 4
gpt4 key购买 nike

我正在将 MATLAB 代码传输到 python 中并尝试使用 OpenCV 函数 cv2.resize 缩小图像,但我从 MATLAB 输出中得到了不同的结果。

为确保我的代码在调整大小之前没有做错任何事情,我在两个函数上都使用了一个小示例并比较了输出。

我首先在 Python 和 MATLAB 中创建了以下数组并对它进行了上采样:

Python - NumPy 和 OpenCV

    x = cv2.resize(np.array([[1.,2],[3,4]]),(4,4), interpolation=cv2.INTER_LINEAR)
print x

[[ 1. 1.25 1.75 2. ]
[ 1.5 1.75 2.25 2.5 ]
[ 2.5 2.75 3.25 3.5 ]
[ 3. 3.25 3.75 4. ]]

MATLAB

    x = imresize([1,2;3,4],[4,4],'bilinear')

ans =

1.0000 1.2500 1.7500 2.0000
1.5000 1.7500 2.2500 2.5000
2.5000 2.7500 3.2500 3.5000
3.0000 3.2500 3.7500 4.0000

然后我把答案调整回原来的 2x2 大小。

python :

    cv2.resize(x,(2,2), interpolation=cv2.INTER_LINEAR)

ans =

[[ 1.375, 2.125],
[ 2.875, 3.625]]

MATLAB:

    imresize(x,[2,2],'bilinear')

ans =

1.5625 2.1875
2.8125 3.4375

它们显然不一样,数字越大,答案就越不一样。

如有任何解释或资源,我们将不胜感激。

最佳答案

MATLAB 的 imresizeanti-aliasing enabled by default :

>> imresize(x,[2,2],'bilinear')
ans =
1.5625 2.1875
2.8125 3.4375
>> imresize(x,[2,2],'bilinear','AntiAliasing',false)
ans =
1.3750 2.1250
2.8750 3.6250

这在过去曾让我绊倒,同时试图 reproduce the results of imresize using just interp2 .

关于matlab - 为什么 OpenCV cv2.resize 给出的答案与 MATLAB imresize 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997094/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com