试验很简单,取二值图像的质心,三种方法做比较

1.完全采用矩阵性能不做任何循环操作,对find后的值进行除法与取余操作,从而得到centroid

2.完全采用循环操作,最简单明了

3.结合1,2,对每一列进行find,省去与除法与取余的计算时间

分析

试验证明

  • 矩阵小的情况下,2是最优的,1与3差不多是2的三倍

  • 矩阵中大情况下,三种方法时间一样

  • 当处理大矩阵时,方法3具有明显的优势,1,2差不多是3的两倍倍时间

所以我采用了方法2,简单明了,效率也可以。

测试代码

M = 9000;
N = 1700;
A = randn(M,N);
A = A>0.0; %%%%%%%%%%%%%%%%%%%% 方法1 %%%%%%%%%%%
fprintf('\n1: ');
tic
b = find(A>0);
c = mod(b,M);
x1 = sum(c)+numel(find(c==0))*M;
y1 = sum(ceil(b./double(M)));
n1 = numel(b); toc %%%%%%%%%%%%%%%%%%%% 方法2 %%%%%%%%%%%
fprintf('2: ');
tic
sx = 0;
sy = 0;
n2 = 0; for i = 1:M
for j = 1:N
if A(i,j) > 0
sx = sx + i;
sy = sy + j;
n2 = n2 + 1;
end
end
end
x2 = sx;
y2 = sy;
toc %%%%%%%%%%%%%%%%%%%% 方法3 %%%%%%%%%%%
fprintf('3: ');
tic
sx = 0;
sy = 0; for j = 1:N
c = find(A(:,j)>0);
sy = sy + numel(c)*j;
sx = sx + sum(c);
end
x3 = sx;
y3 = sy;
toc fprintf('(%d,%d,%d),(%d,%d,%d),(%d,%d)\n',x1,y1,n1,x2,y2,n2,x3,y3);

{matlab}取二值图像centroid几种方法性能比较的更多相关文章

  1. 选中没有选中的复选框,匹配含有某个字符串的正则,json取值的两种方法,把变量定义在外面跟里面的区别

    一.筛选没有选中的复选框:not("input:checked") 二.匹配有VARCHAR的字符串:".*VARCHAR.*?" 三.json取值的两种方法 ...

  2. (六)C#中判断空字符串的三种方法性能分析

    三种方法分别是: string a=""; 1.if(a=="") 2.if(a==string.Empty) 3.if(a.Length==0) 三种方法是等 ...

  3. C#中判断空字符串的3种方法性能分析

    3种方法分别是:string a="";1.if(a=="")2.if(a==String.Empty)3.if(a.Length==0) 3种方法都是等效的, ...

  4. php抓取页面的几种方法详解

    本篇文章是对php抓取页面的几种方法进行了详细的分析介绍,需要的朋友参考下 在 做一些天气预报或者RSS订阅的程序时,往往需要抓取非本地文件,一般情况下都是利用php模拟浏览器的访问,通过http请求 ...

  5. MATLAB中多行注释的三种方法

    MATLAB中多行注释的三种方法 A. %{ 若干语句 %} B. 多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R 取消注释: 选中要取消注释 ...

  6. 【数值分析】误差的分析与减少及Matlab解线性方程的四种方法

    1.误差的来源 模型误差:数学模型与实际问题之间的误差 观测误差:测量数据与实际数据的误差 方法误差:数学模型的精确解与数值方法得到的数值解之间的误差:例如 舍入误差:对数据进行四舍五入后产生的误差 ...

  7. Excel VBA 从外部工作簿取数的5种方法

    '======================================================= '1.循环单元格取数,效率最低,不可取,初学者易犯 '2.区域相等取数 '3.复制粘贴 ...

  8. .NET基础之--C#中判断空字符串的3种方法性能分析

    那么为什么if(a.Length==0)最快呢?因为整数判断等于最快,没有经过实例化等复杂的过程. 所以:建议大家判断字符串是否为空用 if(a.Length==0). 对于三种方法的评价: 1.if ...

  9. php取整的几种方法

    php取整的几种方式. floor 舍去法取整 语法格式:float floor ( float value )返回不大于value 的下一个整数,将value 的小数部分舍去取整.floor() 返 ...

随机推荐

  1. js实现时间控件

    <html><head> <title>时间控件</title></head><body > <input name=&q ...

  2. Array.prototype.indexOf

    arr.indexOf(searchElement[, fromIndex = 0]) Array.prototype.indexOf()

  3. Linux TC基于CBQ队列的流量管理范例

    参考了TC的很多文档,自己也整理了一篇配置记录.在实际使用过程中效果还不错,在此分享给大家以备参考.环境:局域网规模不是很大40多台机器. NAT共享上网(内网:eth0 外网:eth2)CBQ是通过 ...

  4. asp.net 把图片压缩成zip之后再进行下载

    //这是导出的js方法 function fundaochu() { var data = "keyword=GetImageListdaochu&type=daochu&m ...

  5. LintCode Search For a Range (Binary Search)

    Binary Search模板: mid 和 target 指针比较,left/ right 和 target 比较. 循环终止条件: 最后剩两数比较(while(left + 1 < righ ...

  6. 正则表达式常用用法汇总 __西科大C语言

    正则表达式,又称正规表示法.常规表示法.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列 ...

  7. IncDec Sequence

    题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=3043[题目描述]给定一个长度为 n 的数列{a1,a2...an},每次可以选择一个区间[ ...

  8. LeetCode 【235. Lowest Common Ancestor of a Binary Search Tree】

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  9. PhpStorm (强大的PHP开发环境)2016.2.1 附注册方法

    最新版PhpStorm 2016正式版改进了PHP 7支持,改进代码完成功能. PhpStorm 是最好的PHP开发工具,使用它进行PHP开发将会让你感觉到编程的乐趣. 快乐无极终于从oschina看 ...

  10. .NET微信自定义分享标题、缩略图、超链接及描述的设置方法

    前端Js引用: <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> ...