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

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. Android 学习第7课,java android project 项目文档结构

    src: 主要存放java源文件 gen:用于存放由开发工具自动生成的内容 R.java(很重要),用于登记各种资源的ID,编译器在你放入资源于自动生成的,程序员不需要自己去修改,是不能自己修改的 往 ...

  2. Valgrind的多线程调试工具

    Valgrind的多线程调试工具  Helgrind是Valgrind的一个重点功能 本节主要针对与多线程基本安全问题进行检测:[所有的代码环境都是在POSIX_THREAD模式下] 写线程代码时 经 ...

  3. ubuntu下mysql的常用命令,MySQL数据库的基本操作命令

    一.mysql服务操作 0.查看数据库版本 sql-> status; 1.net start mysql //启动mysql服务 2.net stop mysql //停止mysql服务  3 ...

  4. bootstrap-13

    bootstrap框架中制作导航条主要通过“.nav”样式.默认的.nav样式不提供默认的导航方式,必须附加另外一个样式才会有效,比如.nav-tabs,.nav-pill之类. 导航(标签型导航): ...

  5. MySql变量,

    http://blog.csdn.net/rdarda/article/details/7878836 1.变量的定义 在Mysql里面可以像我们写代码中一样定义变量来保持中间结果,看下面的格式: [ ...

  6. 034. asp.netWeb用户控件之三通过用户控件实现用户注册和登录

    用户控件login.ascx代码: <%@ Control Language="C#" AutoEventWireup="true" CodeFile=& ...

  7. List remove注意点

    public class ListTest { public static void main(String[] args) { // TODO Auto-generated method stub ...

  8. 10 个最适合 Web 和 APP 开发的 NodeJS 框架

    在浏览器以外运行 JavaScript 对于 JavaScript 爱好者来说非常神奇,同时也肯定是 web 应用程序开发界最受欢迎的进步之一.全球各地的开发者张开双臂拥抱 NodeJS. 对于新手来 ...

  9. 自动 点击切换 按钮切换 轮播无缝选项卡 ----原生js

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  10. 【转】CSS z-index 属性的使用方法和层级树的概念

    文章转自:CSS z-index 属性的使用方法和层级树的概念,另外加了一点自己的注释 CSS 中的 z-index 属性用于设置节点的堆叠顺序, 拥有更高堆叠顺序的节点将显示在堆叠顺序较低的节点前面 ...