前言
度过了理论篇,相信这篇你读起来会轻松很多。本文尝试使用mean shift算法对图像进行降噪。如果你对这个算法还不清楚建议阅读我写的上一篇文章。
环境和依赖
- mac或者linux系统(win平台没有测试)
- g++ 和 cmake
- openCV
优秀个人技术博客blog,机器学习,前端后端技术。Common Lisp爱好者。零基础教程向博客。个人诗集,技术和文艺双馨。重庆邮电大学学长。
度过了理论篇,相信这篇你读起来会轻松很多。本文尝试使用mean shift算法对图像进行降噪。如果你对这个算法还不清楚建议阅读我写的上一篇文章。
以前在自学机器学习的时候,只是简单的看了一下思路然后就是跟着进行数学推到。至于从算法到实际实现总是存在一些距离。于是就有了自己写这样一系列文章的想法。就是把自己从知识到实践的过程记录下来。思考出一条从理论到实践的路径。这一直都是我非常想研究的。一篇文章或许看不出什么,不过我相信只要坚持这种工作,一定可以得出令人欣喜的答案来的。
Mean shift 中文译名又叫做,均值漂移。在机器学习领域可以实现聚类,在图像领域可以实现目标追踪,和图像平滑。是一种应用很广的算法。接下来我将尝试使用通俗的语言,在不借助数学工具的情况下使你了解这个算法都做了什么。
首先我们先假设一个任务。我们给出平面中的一组点,然后要求你根据这些点的信息,将空间分割开来。怎么分割呢?如果给你一只铅笔,你或许可以把这些点想象成天空中的星星,有的地方很密集,有的地方和稀疏,有的像星云的一部分,有的又像银河之类的一个尾巴。你可能凭感觉画出来了。但是这样的工作可以由机器自动完成吗?
答案是可以,我们选取平面内的任意一个点,看看他周围已经存在的数据对这个点的影响是什么。然后通过这个影响移动这个点。然后在进行迭代,就可以得出这个点收敛的数据了。(收敛的条件当然是这个影响趋近与0)
额。听起来还是很抽象?看看下面的图片你就明白了。
在这篇文章中我将讨论获取知识的方法。注意,这里面大部分是我个人经验之谈,既有可以视为理论的东西,也有一些很实际的方法。现在这个阶段我不大乐意与将这两者在文章中分的很细。原因是我没有这个思考的力气。很无耻的理由是吧,我也是这样认为的。所以我将在以后的时候不是直接成文,而是先写一个草稿然后在整理一次的。(注意我也不知道这样做是否有效果)
额~关于第一个问题我觉的以我现在的知识没有办法回答你。不过如果你在认真读我的文章,我建议你一直去思考这个问题。然后对照我所说的,如果觉得不适用的,选择性阅读。为什么建议你这样的去阅读呢?因为我自己曾被那些半吊子结论的文章坑苦了。明明结论的正确性不敢用100%的把握(实际上几乎都不能)却言之凿凿。这样就相当于学习了错误的知识,是不可取的。但是不读可能又会失去其中隐含的某种有用的信息,怎么办呢?我的建议是不要太关注这个问题。不然你生活中有太多这样的问题要求解决了。
好了。现在看一眼第二个问题,为什么要去获取知识。既然已经饥不择食到了读我这篇文章,这个问题就显得有些愚蠢了。这仿佛就像在舞台上突然问另外一个演员为什么要表演一样可笑。有什么理由吗?没有。就是一个行为,没有为什么!关心的人想怎么定义都可以。可我想提醒你的是:认真想一下可能某个获取知识的过程就不需要了。这听上去有些难以理解。比如说你正在上网查询女孩子喜欢的口红的品牌,在学习相处的心理学,在思考怎么讲一个让人发笑的笑话。我可怜的朋友,你想获取的不是知识是她的心。然而要知道,没有知识可以描述的。所以我建议你打个电话而已
所以这个问题,正常情况下没有讨论的必要,一旦讨论起来,非要弄个很重大的改变不得。为了保险起见我这里提起,以便于你在获取知识的过程中,可以想一下。嗯,通常就一下下
正文。
小贴士:这里将对正文中的某些词汇进行解释。
扩展: 这里是作者建议的内容,和编程方面的延伸。可以跳过阅读。
示例:这里是帮助读者理解而写的示例。
注意 提示读者需要注意的事项。
REmote DIctionary Server(Redis) 是一个由SalvatoreSanfilippo写的key-value(键值对)存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。[详细见表一]
它通常被称为数据结构服务器,因为值(value)可以是字符串(String), 哈希(Map), 列表(list), 集合(sets) 和有序集合(sorted sets)等类型。
在编程的魔法世界中,有许多的黑魔法,其中最黑的几种肯定有js了。特别是接触到了nodejs和npm后。顿时觉得无所不能,拥有了触及全世界的力量。在这篇文章中,你将看到使用js打开一个终端并且让他运行指定的命令的方法。
使用一个叫做shelljs
的命令就可以了。送上传送门。请翻墙!
使用这个命令可以打开一个应用。比如打开一个叫做Abc的应用。(没有这个应用的)使用$ open -a Abc
就可以了。
通过这些预备知识几乎就可完成这项任务了。你想到了吗。不看下面。自己试试 :)
最近研究了一下js中一个导出数据到Excel的模块。发现国内竟然没有人翻译。而小学弟学妹们听见导出Excel什么的,更是闻虎色变。其实没那么难。今天香蕉君就翻译一下。原文地址传送门。注意下面都是我这个英语渣的翻译,如果发现了错误欢迎指出。