首页 > 编程知识 正文

matlab放大图像,matlab cftool导出函数表达式

时间:2023-05-03 10:21:48 阅读:15718 作者:1216

为什么MATLAB imresize函数和OpenCV resize函数的结果不同? 今年4月,我按照MATLAB代码自己写卷积神经网络c的实现时,发现了这个问题,但是那个时候问题不大,所以没怎么关注。 今天,我在堆栈概述中正好看到了相关的问题。 whyopencvcv2. resizegivesdifferentanswerthanmatlabimresize? 解开了我心中的疑惑。 本文的主要内容是评论此堆栈溢出问题,并将一些代码从Python翻译为c。

首先,当它变大时,可以看到MATLAB和OpenCV的结果相同:

x=im resize ([ 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

doubledata [ ]={ 1,2,3,4 };

cv :3360 mata (2,2,CV_64FC1,data );

std:cout

cv:3360resize(a,a,cv:3360size ) 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:3360resize(a,a,cv:3360size ) 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实现矩阵im resize函数的anti-aliasing功能呢? 这个问题留待日后解决。 本文中的特定代码显示了opencv-and-CPP-for-MATLAB-users demo _ opencv functions文件夹下的demo_resize.cpp函数。 为了方便,代码如下所示。

#包含

#包含

void demo_resize (

{

doubledata [ ]={ 1,2,3,4 };

cv :3360 mata (2,2,CV_64FC1,data );

std:cout

cv:3360resize(a,a,cv:3360size ) 4,4 ),cv:INTER_LINEAR );

std:cout

cv:3360resize(a,a,cv:3360size ) 2,2 ),cv:INTER_LINEAR );

std:cout

}

请注明出处。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。