JavaScript编程通过Matlab质心算法定位学习
目录
- Matlab质心算法
Matlab作为封闭的商业软件,受美国政府左右,无视商业道德,故不建议使用。如果喜欢Matlab语法,可移步开源的octave,其语法与matlab完全相同。
Matlab质心算法
所谓质心,就是当密度作为像素点灰度值时的重心,例如其质心的x坐标为
最直观的方法就是下面的这种方式了。
%%通过质心算法找到img的质心位置 function [x,y] = oCenter(img) img = double(img); [m,n] = size(img); x = 0;y = 0;sum=0; for i = 1:m for j = 1:n y = y + img(i,j)*i; x = x + img(i,j)*j; sum = sum+img(i,j); end end x = x/sum; y = y/sum;
这么写足够简单粗暴,却也太丑了,毕竟在Matlab中,矩阵才是最基本的操作单元。
而且在累加求和的过程中,也的确反复使用了相同的数组。对于第i行而言,每一列分别与1,2,3...
相乘并求和,也就是第i行向量与向量[1:n]
的点积。于是先不管整张图片,第i行向量的质心也就可以比较简单地写出来了。
x = img(i,:)*(1:n)'/sum(img(i,:));
基于此,我们还得到了一个意外收获,即可以很方便地把每一行的质心用一行表达式写出来
x = img*(1:n)'./sum(img,2);%每一行的质心 y = (1:m)*img./sum(img);%每一列的质心
强迫症表示看上去很舒服。
相应地,图片整体的质心可写为
sumImg = sum(img(:)); x = sum(img)*(1:n)'/sumImg; y = (1:m)*sum(img,2)/sumImg;
以上就是JavaScript编程通过Matlab质心算法定位学习的详细内容,更多关于JavaScript定位Matlab质心算法的资料请关注我们其它相关文章!
相关推荐
-
JavaScript实现计算多边形质心的方法示例
本文实例讲述了JavaScript实现计算多边形质心的方法.分享给大家供大家参考,具体如下: 最近要基于百度地图显示多边形的标注,所以就研究了下计算Polygon的质心,代码如下: function Area(p0,p1,p2) { var area = 0.0 ; area = p0.lng * p1.lat + p1.lng * p2.lat + p2.lng * p0.lat - p1.lng * p0.lat - p2.lng * p1.lat - p0.lng * p2.lat; re
-
javascript图像处理—边缘梯度计算函数
前言 上一篇文章,我们讲解了图像处理中的膨胀和腐蚀函数,这篇文章将做边缘梯度计算函数. 图像的边缘 图像的边缘从数学上是如何表示的呢? 图像的边缘上,邻近的像素值应当显著地改变了.而在数学上,导数是表示改变快慢的一种方法.梯度值的大变预示着图像中内容的显著变化了. 用更加形象的图像来解释,假设我们有一张一维图形.下图中灰度值的"跃升"表示边缘的存在: 使用一阶微分求导我们可以更加清晰的看到边缘"跃升"的存在(这里显示为高峰值): 由此我们可以得出:边缘可以通过定位梯
-
javascript 计算两个整数的百分比值
复制代码 代码如下: ///计算两个整数的百分比值 function GetPercent(num, total) { num = parseFloat(num); total = parseFloat(total); if (isNaN(num) || isNaN(total)) { return "-"; } return total <= 0 ? "0%" : (Math.round(num / total * 10000) / 100.00 + &qu
-
JavaScript编程通过Matlab质心算法定位学习
目录 Matlab质心算法 Matlab作为封闭的商业软件,受美国政府左右,无视商业道德,故不建议使用.如果喜欢Matlab语法,可移步开源的octave,其语法与matlab完全相同. Matlab质心算法 所谓质心,就是当密度作为像素点灰度值时的重心,例如其质心的x坐标为 最直观的方法就是下面的这种方式了. %%通过质心算法找到img的质心位置 function [x,y] = oCenter(img) img = double(img); [m,n] = size(img); x = 0;
-
JavaScript编程学习技巧汇总
本文实例为大家分享了JavaScript编程学习技巧,供大家参考,具体内容如下 1.变量转换 varmyVar="3.14159", str=""+myVar,//tostring int=~~myVar,//tointeger float=1*myVar,//tofloat bool=!!myVar,/*toboolean-anystringwithlength andanynumberexcept0aretrue*/ array=[myVar];//toarra
-
JavaScript实现树的遍历算法示例【广度优先与深度优先】
本文实例讲述了JavaScript实现树的遍历算法.分享给大家供大家参考,具体如下: <script type="text/javascript"> var t = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]; //下面这段深度优先搜索方法出自Aimingoo的[JavaScript语言精髓与编程实践] var deepView = function(aTree,iNode) { (iNode in aTree)
-
JavaScript编程设计模式之构造器模式实例分析
本文实例讲述了JavaScript编程设计模式之构造器模式.分享给大家供大家参考,具体如下: 经典的OOP语言中,构造器(也叫构造函数)是一个用于初始化对象的特殊方法.在JS中,因为一切皆对象,对象构造器经常被提起. 对象构造器用于建立制定类型(Class)的对象,可以接受参数用于初始化对象的属性和方法. 对象建立 在JS中,有三个常用的方法用于建立对象: //1, 推荐使用 var newObject = {}; //2, var newObject = Object.create( null
-
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
本文实例讲述了JavaScript编程设计模式之观察者模式.分享给大家供大家参考,具体如下: 简介 简单的解释观察者模式,就是一个对象(subject)维护一个依赖他的对象(observers)列表,当自身状态发生变化时,自动通知所有观察者对象.当某个对象不需要获得通知时,可以从对象列表中删除掉. 从上面的解释中我们可以提炼出三个componet: Subject, ObserverList和Observer,用JS实现很简单: function ObserverList(){ this.obs
-
javascript编程开发中取色器及封装$函数用法示例
本文实例讲述了javascript编程开发中取色器及封装$函数用法.分享给大家供大家参考,具体如下: 1.封装$函数 function $(str){ //如果传入的是'#' 则选择id标签 //如果传入的是'.' 则选择所有的类名标签 //如果传入的既不是'#也不是'.' 选择复合标签 //判断传入的值 if(typeof str !='string'){ console.log('传入的参数有误!'); return null; } //获取参数的第一个字母 var firstChar=st
-
比较不错的函数式JavaScript编程指南教程
你是否知道JavaScript其实也是一个函数式编程语言呢?本指南将教你如何利用JavaScript的函数式特性. 要求:你应当已经对JavaScript和DOM有了一个基本的了解. 写这篇指南的目的是因为关于JavaScript编程的资料太多了但是极少的资料提到了JavaScript的函数式特性.在本指南中,我只会讲解这些基本知识而不会深入其它的函数式语言或这是Lambda算子. 你可以点击所有的例子然后你所看到的代码就会被执行,这样就可以令指南变得具有交互性.你也可以使用这个沙箱来尝试. 第
-
Dojo Javascript 编程规范 规范自己的JavaScript书写
前言 良好的JavaScript书写习惯的优点不言而喻,今天彬Go向大家推荐Dojo Javascript 编程规范,相当不错的 Javascript 编程风格规范,建议大家可以借鉴一下此规范编写 Javascript.感谢i.feelinglucky的翻译. 序 Any violation to this guide is allowed if it enhances readability. 所有的代码都要变成可供他人容易阅读的. 快读参考 核心 API 请使用下面的风格: 结构 规则 注释
-
函数式JavaScript编程指南
简介 你是否知道JavaScript其实也是一个函数式编程语言呢?本指南将教你如何利用JavaScript的函数式特性. 要求:你应当已经对JavaScript和DOM有了一个基本的了解. 写这篇指南的目的是因为关于JavaScript编程的资料太多了但是极少的资料提到了JavaScript的函数式特性.在本指南中,我只会讲解这些基本知识而不会深入其它的函数式语言或这是Lambda算子. 你可以点击所有的例子然后你所看到的代码就会被执行,这样就可以令指南变得具有交互性.你也可以使用这个沙箱来尝试
-
javascript编程起步(第三课)
javascript编程起步(第三课) 第三课终于和大家见面了, 大家要感谢 Actions 的辛勤劳动啊, 好好利用论坛给大家提供的资源和教程, 希望大家一起学习提高 :D 大家有什么意见, 建议或者想法, 可以到本版的教程问答区 或 站务管理版的 建议或意见 去发表, 我们会及时给您反馈 :) 下面是今天的学习重点: A.补充上课的变量内容 B.if语句的基本语法 C.window.com()基本用法 A.变量 1.变量的类型规则 javascript是无类型的,他的变量可以放任何数据类型的
随机推荐
- JQuery创建DOM节点的方法
- 详谈Java中instanceof和isInstance的区别
- c#中SqlHelper封装SqlDataReader的方法
- android动态布局之动态加入TextView和ListView的方法
- php生成数字字母的验证码图片
- 一个用php3编写的简单计数器
- 举例解析Java的设计模式编程中里氏替换原则的意义
- python利用不到一百行代码实现一个小siri
- 用asp实现的数据库中存取文件的代码
- Android中ViewPager和Fragment的使用
- 讲解JavaScript中for...in语句的使用方法
- MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
- 浅谈页面装载js及性能分析方法
- js数组Array sort方法使用深入分析
- 循环取值Request.QueryString的用法
- Redis安装教程图解
- C#操作DataTable方法实现过滤、取前N条数据及获取指定列数据列表的方法
- 一个从别的网站抓取信息的例子(域名查询)
- Oracle 11g 安装配置图文教程
- 优雅地使用loading(推荐)