为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同?今年 4 月,我在依照 MATLAB 代码自己写一个卷积神经网络 C++ 实现的过程中,就发现了这个问题,不过那时问题不是太大,所以也没有给出太多关注。今天在 stackoverflow 上正好看到了一个相关问题 why OpenCV cv2.resize gives different answer than MATLAB imresize?,解答了我心中的疑惑。这篇的文章主要内容是将这个 stackoverflow 问题做了注解,并将部分代码由 Python 翻译成 C++。

首先我们可以看到,在变大的时候,MATLAB 和 OpenCV 有一样的结果:

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

% x =

% 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

double data[] = {1, 2, 3, 4};

cv::Mat A(2, 2, CV_64FC1, data);

std::cout<

cv::resize(A, A, cv::Size(4, 4), cv::INTER_LINEAR);

std::cout<

// [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]

但是,在把矩阵缩小的时候,却出现了结果不一样:

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

% ans =

% 1.5625 2.1875

% 2.8125 3.4375

cv::resize(A, A, cv::Size(2, 2), cv::INTER_LINEAR);

std::cout<

// [1.375, 2.125;

// 2.875, 3.625]

这是为什么呢?原因在于 MATLAB 的 imresize 函数默认是开启了 anti-aliasing,将其关闭,结果就跟 C++ 一样了:

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

% ans =

% 1.3750 2.1250

% 2.8750 3.6250

那么问题来了,怎么让 OpenCV 做到 MATLAB imresize 函数的 anti-aliasing 功能呢?这个问题,留待日后解决。本文具体代码可见 OpenCV-and-CPP-for-MATLAB-Users Demo_OpenCVFunctions 文件夹下的 demo_resize.cpp 函数,为了方便起见,将代码陈列如下:

#include

#include

void demo_resize()

{

double data[] = {1, 2, 3, 4};

cv::Mat A(2, 2, CV_64FC1, data);

std::cout<

cv::resize(A, A, cv::Size(4, 4), cv::INTER_LINEAR);

std::cout<

cv::resize(A, A, cv::Size(2, 2), cv::INTER_LINEAR);

std::cout<

}

转载请注明出处。

matlab imresize算法详解,为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同相关推荐

  1. matlab中imresize函数的用法,为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同

    为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同?今年 4 月,我在依照 MATLAB 代码自己写一个卷积神经网络 C++ 实现的过程中,就发现了这个问题,不过那 ...

  2. matlab运行dxcv,MATLAB imresize 函数和 OpenCV resize 函数结果不同

    为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同?今年 4 月,我在依照 MATLAB 代码自己写一个卷积神经网络 C++ 实现的过程中,就发现了这个问题,不过那 ...

  3. Dijkstra算法和Floyd算法详解(MATLAB代码)

    一.Dijkstra算法 1.算法简介 Dijkstra算法是由E.W.Dijkstra于1959年提出,又叫迪杰斯特拉算法,它应用了贪心算法模式,是目前公认的最好的求解最短路径的方法.算法解决的是有 ...

  4. lle算法的matlab实现,lle算法详解及matlab代码实现

    LLE算法代码 % LLE ALGORITHM (using K nearest neighbors) % % [Y] = lle(X,K,dmax) % % X = data as D x N ma ...

  5. lle matlab 实例_lle算法详解及matlab代码实现

    LLE 算法代码 % LLE ALGORITHM (using K nearest neighbors) % % [Y] = lle(X,K,dmax) % % X = data as D x N m ...

  6. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  7. 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码

    粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...

  8. ADMM,ISTA,FISTA算法步骤详解,MATLAB代码,求解LASSO优化问题

    ADMM,ISTA,FISTA算法步骤详解,MATLAB代码,求解LASSO优化问题 原创文章!转载需注明来源:©️ Sylvan Ding's Blog ❤️ 实验目的 了解 ADMM, ISTA, ...

  9. 《MATLAB图像处理实例详解》:学习第六天(2022.10.09)

    4.2.3 图像的缩放 MATLAB 图像处理工具箱中提供了函数imresize( )进行图像的缩放操作,其具体的调用格式如下: B=imresize(A, m):该函数返回缩放后的图像B:A为要进行 ...

最新文章

  1. 本周ASP.NET英文技术文章推荐[03/11 - 03/17]
  2. window,windowManager --《android 艺术探索读书》笔记
  3. Oracle创建用户并给用户授权查询指定表或视图的权限
  4. 选择HLS或WebRTC需要考虑的五个因素
  5. mysql jdbc链接配置文件_Java JDBC使用配置文件连接数据库
  6. mysql6获取不到连接_codesmith6.5连接Mysql提示“找不到请求的 .Net Framework Data Provider。可能没有安装。”解决方法...
  7. IBM加入OpenOffice 贡献Lotus Notes程序代码
  8. 实验4-1-5 韩信点兵 (10 分)
  9. 【纪中集训2019.3.25】礼物
  10. 题解 P1217 【[USACO1.5]回文质数 Prime Palindromes】
  11. 第十三章 RememberMe——《跟我学Shiro》[张开涛]
  12. 结构力学计算软件_自主研发|安世亚太通用仿真软件PeraSim提前剧透
  13. Hello World · GitHub 指南
  14. 黄金分割Android程序,黄金分割法程序.doc
  15. 康考迪亚大学应用计算机科学,康考迪亚大学专业设置
  16. zz什么是beacons - 在Web Analytics中的应用(网站分析的灯塔)
  17. php发送邮件功能(以QQ邮件为例)
  18. firefox插件推荐
  19. html锚机链接的使用+代码
  20. R语言散点图分类、配色、添加趋势线

热门文章

  1. 当当网 R 语言学习资料统计分析
  2. Vue子组件重新渲染
  3. 31.基类的公有成员在派生类中的访问权限由 决定.java_基类的公有成员在派生类中的访问权限由派生方式决定。()...
  4. 简单易懂应如何快速掌握超长激光测距仪相关性能指标TFNLR20KI激光测距仪带你走进其简单的世界
  5. 20世纪中文小说100强
  6. Duplicate entry 'sang' for key 'UK_f8t9fsfwc17s6qcbx0ath6l3h'
  7. 量子物理史话 第三章 火流星
  8. Unity修改UI的颜色
  9. zeebe入门课程10-bpmn元素的支持7(exclusive gateway )
  10. 软件体系结构的第二次实验(解释器风格与管道过滤器风格