看了上面的问题,发现为什么opencv和matlab的resize结果不一样。
但是,当输入数据类型为 UINT16 时,结果仍然不同。
我想知道为什么会这样。
- 调整插值:双三次(修改后的 opencv 因子:0.75 -> 0.5)。
- Matlab 抗锯齿选项错误。
matlab(2016a)示例
input = uint16(reshape(0:15,4,4).');
unit16_out = imresize(input, 0.5,'AntiAliasing', false);
[ 2, 5
10, 13]
openCV(2.4.13.5) 示例
cv::Mat in_16(4, 4, CV_16UC1);
for (int i = 0; i < 16; ++i) {
in_16.at<unsigned short>(i) = i;
}
cv::Mat out_16;
cv::resize(in_16, out_16, cv::Size(0, 0), 0.5, 0.5, CV_INTER_CUBIC);
[2, 4
11, 13]