pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

MATLAB vs C++ vs OpenCV - imresize

MATLAB vs C++ vs OpenCV - imresize(MATLAB vs C++ vs OpenCV - imresize)
本文介紹了MATLAB vs C++ vs OpenCV - imresize的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有以下 MATLAB 代碼,我想將其傳輸到 C++

I have the following MATLAB code which I want to transport into C++

假設 Gr 是二維矩陣并且 1/newscale == 0.5

Assume Gr is 2d matrix and 1/newscale == 0.5

Gr = imresize(Gr, 1 / newScale);

在 MATLAB 文檔中:

B = imresize(A, scale) 返回圖像 B 的縮放倍數A. 輸入圖像 A 可以是灰度、RGB 或二值圖像.如果scale 在 0 到 1.0 之間,B 小于 A.如果 scale 更大小于 1.0,B 大于 A.

B = imresize(A, scale) returns image B that is scale times the size of A. The input image A can be a grayscale, RGB, or binary image. If scale is between 0 and 1.0, B is smaller than A. If scale is greater than 1.0, B is larger than A.

所以這意味著我將得到一個二維矩陣 == matrix_width/2 和 matrix_height/2
我如何計算這些值?根據文檔的默認值來自最近 4X4 的三次插值.

So this means I will get a 2D matrix == matrix_width/2 and matrix_height/2
How do I calculate the values? The default according to the docs are coming from cubic interpolation for nearest 4X4.

我找不到執行相同操作的 C++ 示例代碼.能否提供此類代碼的鏈接?

I can't find a sample code for C++ that does the same. Can you please provide a link to such code?

我還發現 這個 OpenCV 函數,resize.

它和 MATLAB 的功能一樣嗎?

Does it do the same as the MATLAB one?

推薦答案

是的,請注意 MATLAB 的 imresize 有 默認啟用抗鋸齒:

Yes, just be aware that MATLAB's imresize has anti-aliasing enabled by default:

imresize(A,scale,'bilinear')

對比你會用 cv::resize() 得到什么,它沒有抗鋸齒:

vs. what you would get with cv::resize(), which does not have anti-aliasing:

imresize(A,scale,'bilinear','AntiAliasing',false)

正如 Amro 提到的,MATLAB 中的默認值是 bicubic,所以一定要指定.

And as Amro mentioned, the default in MATLAB is bicubic, so be sure to specify.

無需修改代碼即可通過雙線性插值獲得匹配結果.

No code modifications are necessary to get matching results with bilinear interpolation.

示例 OpenCV 代碼段:

Example OpenCV snippet:

cv::Mat src(4, 4, CV_32F);
for (int i = 0; i < 16; ++i)
    src.at<float>(i) = i;

std::cout << src << std::endl;

cv::Mat dst;
cv::resize(src, dst, Size(0, 0), 0.5, 0.5, INTER_LINEAR);

std::cout << dst << std::endl;

輸出 (OpenCV)

[0, 1, 2, 3;
  4, 5, 6, 7;
  8, 9, 10, 11;
  12, 13, 14, 15]

[2.5, 4.5;
  10.5, 12.5]

MATLAB

>> M = reshape(0:15,4,4).';
>> imresize(M,0.5,'bilinear','AntiAliasing',true)
ans =
                     3.125                     4.875
                    10.125                    11.875
>> imresize(M,0.5,'bilinear','AntiAliasing',false)
ans =
                       2.5                       4.5
                      10.5                      12.5

請注意,關閉抗鋸齒后的結果是一樣的.

Note that the results are the same with anti-aliasing turned off.

然而,在'bicubic'INTER_CUBIC 之間,由于權重方案的原因,結果是不同的!參見此處,了解數學差異的詳細信息.問題出在計算三次插值系數的 interpolateCubic() 函數中,其中使用常數 a = -0.75 而不是 a = -0.5 就像在 MATLAB 中一樣.但是,如果您編輯 imgwarp.cpp 并更改代碼:

However, between 'bicubic' and INTER_CUBIC, the results are different on account of the weighting scheme! See here for details on the mathematical difference. The issue is in the interpolateCubic() function that computes the cubic interpolant's coefficients, where a constant of a = -0.75 is used rather than a = -0.5 like in MATLAB. However, if you edit imgwarp.cpp and change the code :

static inline void interpolateCubic( float x, float* coeffs )
{
    const float A = -0.75f;
    ...

到:

static inline void interpolateCubic( float x, float* coeffs )
{
    const float A = -0.50f;
    ...

并重建 OpenCV(提示:禁用 CUDA 和 gpu 模塊以縮短編譯時間),然后您會得到相同的結果:

and rebuild OpenCV (tip: disable CUDA and the gpu module for short compile time), then you get the same results:

MATLAB

>> imresize(M,0.5,'bicubic','AntiAliasing',false)
ans =
                    2.1875                    4.3125
                   10.6875                   12.8125

OpenCV

[0, 1, 2, 3;
  4, 5, 6, 7;
  8, 9, 10, 11;
  12, 13, 14, 15]
[2.1875, 4.3125;
  10.6875, 12.8125]

更多關于立方這里.

這篇關于MATLAB vs C++ vs OpenCV - imresize的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數據?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環: for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環?)
Reusing thread in loop c++(在循環 C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環形?)
主站蜘蛛池模板: 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 球形钽粉_球形钨粉_纳米粉末_难熔金属粉末-广东银纳官网 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | 温州在线网| 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 岩棉板|岩棉复合板|聚氨酯夹芯板|岩棉夹芯板|彩钢夹芯板-江苏恒海钢结构 | 游动电流仪-流通式浊度分析仪-杰普仪器(上海)有限公司 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 防爆电机_防爆电机型号_河南省南洋防爆电机有限公司 | 郑州爱婴幼师学校_专业幼师培训_托育师培训_幼儿教育培训学校 | Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | 酒精检测棒,数显温湿度计,酒安酒精测试仪,酒精检测仪,呼气式酒精检测仪-郑州欧诺仪器有限公司 | 希望影视-高清影视vip热播电影电视剧免费在线抢先看 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 反渗透水处理设备|工业零排放|水厂设备|软化水设备|海南净水设备--海南水处理设备厂家 | 江苏齐宝进出口贸易有限公司 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | 代办建筑资质升级-建筑资质延期就找上海国信启航 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 事迹材料_个人事迹名人励志故事| B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 合景一建-无尘车间设计施工_食品医药洁净车间工程装修总承包公司 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-北京罗伦过滤技术集团有限公司 |