При использовании типа данных UINT16. В чем разница изменения размера между matlab и opencv?

Глядя на приведенный выше вопрос, я обнаружил, почему результаты изменения размера между opencv и matlab отличаются.

Однако, когда тип входных данных - UINT16, результат все равно будет другим.

Я хочу знать, почему это происходит.

  • Интерполяция изменения размера: бикубическая (модифицированный коэффициент opencv: 0,75 -> 0,5).
  • Опция Matlab Anti-Aliasing ложная.

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]

0 ответов

Другие вопросы по тегам