当我空闲的时候,我在干什么

另外一个增强自身的系列

发表在 未分类 | 留下评论

当我坐地铁的时候我干什么-导言

最近搬家了,搬到东南二环……

于是之前的校园十分钟路程瞬间变成了现在的一个半小时路程,幸好基本都是坐地铁。

那么来回各一个半小时,共三个小时的时间,怎么能够好好利用起来,才对得起自己这么辛苦呢?

我决定坐地铁的时候,做一些之前觉得没时间做的事情,比如,看书。

以前买了好多书,很多都扫了一眼,觉得看完了,然而如果读书没有记录的话,就像坐火车经过一个城市,

不久之后,你会对这座城市有记忆么?

因此,地铁,读书,笔记。

发表在 生活 | 标签为 | 留下评论

some project picts

526537539553556565566567568569581IMG_1350IMG_1354IMG_1355IMG_1368IMG_1369IMG_1370IMG_1371IMG_1372IMG_1375IMG_1380IMG_1381IMG_1383IMG_1384IMG_1385IMG_1387IMG_1388IMG_1390IMG_1391IMG_1398IMG_1407IMG_1409IMG_1410IMG_1538IMG_1591IMG_1598IMG_1599IMG_1600IMG_1601IMG_1602

发表在 未分类 | 留下评论

Google机器人智能车编程:一单元之贝叶斯公式

发表在 未分类 | 留下评论

Google机器人智能车编程:一单元之Sense&Move

好吧,google的牛人(特隆教授,因为他在google的X-lab,我们就称作x教授好了)终于开始讲课了,果断学,笔记放到博客上,供大家讨论好了,我爱智能车!如下:

google的智能车,起源是2004年Darpa的荒漠挑战赛,斯坦福大学的叫做Stanley的车,获得第一名;后来改名Junior,参加城市挑战赛,获得第二名。

x教授的车在各种复杂环境都能hold住:复杂城市道路、山路、悬崖边、黑夜中突然窜上的梅花鹿,开了好几十万公里,终于内华达合法上路了。

Localization:机器人定位是一个很重要的问题,比如一个智能车想要知道在哪个道路上。传统的方法是通过卫星,也就是GPS(全球定位系统),这货的问题就在于不精确,大概10m误差,也就是说,你完全follow了GPS的话,你就可能撞上收费站,被危害社会安全罪派遣去挖沙子了。

x教授说,小车开得好,至少误差要在2-10cm,咋搞呢?这就需要空间定位的算法了。数学,各位,数学来袭。。。

我擦我也不知道能不能说清楚:

假设我们现在在一个一维的世界里,机器人在这个世界的任何一点,那么一定有一个概率密度函数,当你问起机器人在A点与否的时候,它能够告诉你,这货绝对不可能在这,因为只有0.1%的概率。这个概率密度函数怎么得到呢?不同的场景参数是肯定不同的,因此我们用学习(顺序的)的方法得到:

  • 首先,机器人在任何一点的概率相同;
  • 其次,找到空间中的明显标志物,比如,一维世界里有三个相同的门,机器人只能区分门和墙,不能区分是哪个门。那么当你看到门的时候,在三个门前的概率一定增加了,其他的区域相应的减少,传说中的贝叶斯后验概率(因为你查看了门)
  • 再次,机器人运动,概率密度函数随之变化,平移一下(数学上做个卷积,Convolution)
  • 最后把得到这一系列概率密度相乘,得到概率最高的,就是机器人所在地

Programming Time(用Python自己写一个定位器):

1、Sense

  • 先初始化P,每个点概率相同;
  • 机器人根据当前点的信息来推测自己的位置,例如自己当前点是红颜色,那么红的加权0.6,绿点加权0.2,得到新的概率分布,然后归一化(概率密度积分是1,亲),这就是贝叶斯概率当中的,给定measurement Z,求P(Xi|Z),归一化的时候,才发现Python居然内置了sum()

x教授代码写的也很赞,写代码通用性很好,我自己写的还有if啥的,学习了!

image

我也顺便搞了一个玄幻的:image,归一化的时候。

2、ROBOT MOTION:机器人总在运动当中,如何在数学上体现它的运动呢?概率密度随之移动即可,即卷积。在执行了无穷多步以后,得到了这个概率密度的分布。

注意这个motion是迭代的,所以每次都需要将上一次的P值传递给Motion函数达到迭代的效果。

综上所述,机器人定位,就是Sense(获取信息)+Move(失去信息)的循环,在这个过程中,系统的Entropy(熵)变小,也就是不确定性变小;

总结:

image

image

发表在 未分类 | 留下评论

计算机视觉二:图像特征抽取

图像特征抽取是计算机视觉中很重要也是很常用的一部分,做机器人智能车之类的都会用到。

1、边缘检测:边缘是图像很显著的特征之一,保存有物体特有的结构属性。另外有些时候我们只需要图像中物体的边缘就可以完成某些任务,例如寻找车道线等,因此其他的信息是多余的,它们的存在消耗空间和计算资源,不必保留。

边缘检测的方法大概有两种

  • 基于查找:找到图像一阶导数的最大和最小值来检测边界;
  • 基于过零点:一阶导数极值对应的是二阶导数过零点;

边缘检测的一般流程如下:

edge_det

低通滤波器同时也会弱化边缘的效果,通常前两个步骤可以合并为一步,统一计算出一个卷积和,例如sobel、Prewitt或者DoG。

然而边缘检测并不是一个平凡的问题,即便是看起来找到亮度变化最大的地方,然而亮度变化最大有可能是噪声点(所以在检测以前一般用高斯滤波),也有可能很多地方都符合,人为划定一个阈值是非常难的。一个解决的办法是选择局部范围内的边缘最大值来作为边界。

实际应用中使用Canny算子,其特点在于试图将独立边的候选像素拼装成轮廓,对这些像素使用滞后性阈值,即两个阈值,上限和下限。如果一个像素的梯度大于上限,则被认为是边缘像素,低于下限,抛弃,介于两者之间,看周围是否有高于上限的像素,有则是。

void Canny(const Mat& image, Mat& edges, double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false)

Finds edges in an image using Canny algorithm.

Parameters:
  • image – Single-channel 8-bit input image
  • edges – The output edge map. It will have the same size and the same type as image
  • threshold1 – The first threshold for the hysteresis procedure
  • threshold2 – The second threshold for the hysteresis procedure
  • apertureSize – Aperture size for the Sobel() operator
  • L2gradient – Indicates, whether the more accurate L_2 norm =\sqrt{(dI/dx)^2 + (dI/dy)^2} should be used to compute the image gradient magnitude ( L2gradient=true ), or a faster default L_1 norm =|dI/dx|+|dI/dy| is enough ( L2gradient=false )

实际效果

发表在 计算机视觉 | 标签为 , , , , , , , , | 留下评论

计算机视觉一:图像读取和多分辨率

目标:

  1. 读取pgm、jpg、bmp、tiff格式的图像文件
  2. 将这些文件利用金字塔方法展示多分辨率

prerequest:

安装opencv的python-binding:ubuntu下用sudo apt-get install python-opencv即可,如果安装过程当中遇到任何缺少的package,安装之

原理分析:

OpenCV已经支持上述四类图像的读取,使用cvLoadImage函数

cvLoadImage

从文件中读取图像

IplImage* cvLoadImage( const char* filename, int iscolor=1 );
filename
要被读入的文件的文件名。
iscolor
指定读入图像的颜色:
如果 >0,读入的图像将被强制转换为3通道彩色图像;
如果为 0, 读入的图像将被强制转换为灰度图像;
如果 <0, 读入的图像将与它本来颜色信息一样 (颜色通道数目由图像文件决定)。

函数cvLoadImage从指定文件读入图像,返回读入图像的指针。 目前支持如下文件格式:

  • Windows位图文件 – BMP, DIB;
  • JPEG文件 – JPEG, JPG, JPE;
  • 便携式网络图片 – PNG;
  • 便携式图像格式 – PBM,PGM,PPM;
  • Sun rasters – SR,RAS;
  • TIFF文件 – TIFF,TIF。

因此,第一个任务可以轻松完成,但是仍然有必要了解一下为什么有这么多类型的图片格式:

pgm格式:Portable Gray Map,一个用于灰度图的很好解析的格式

jpg格式:Joint Photographic Experts Group,用于压缩图片,比例很高,是大多数浏览器支持的类型,具体压缩方法这个介绍不错,and这个

bmp格式:Bitmap-File,诡异的windows格式,体积巨大而且只跟面积不跟色彩有关系⋯⋯

tiff格式:Tagged Image File Format,无损压缩,体积大

测试用例见test_image.zip更多实现效果和图像金字塔一起展示

 

发表在 计算机视觉 | 标签为 | 留下评论

计算机视觉初探

这个学期学习了计算机视觉,以前了解到和使用到的都是一知半解的东西,没有形成系统,正好趁这次机会,把一些基础知识巩固一下。

老师的project一共是八个,分别是:

  1. (完成)图像的读取与多分辨率图像的生成;
  2. (完成)图像特征抽取;
  3. (完成)摄像机几何模型与校准;
  4. (完成)立体视觉;
  5. (完成)由运动(估计)恢复仿射结构
  6. (完成)兴趣点与模板跟踪;
  7. (完成)轮廓跟踪;
  8. (完成)物体检测;

我想把这几个基本project做成一个教程,供后来的同学交流和讨论,因此,我会利用下面的技术,让它看起来更鲜活,而不简单是一些文字和图片。

教程目标:

  • 可以在线操作并查看效果
  • 提供源代码以及跑代码所需要的资源(pgm图片,若干xml数据之类)
  • 一些必要的解释以及一些参考资料

为了完成这个目标,需要:

  • 一个快速实现想法的语言,Python
  • 一个快速的图像处理的库,OpenCV的python binding,这个教程里面我着重叙述这部分工作。
  • 一个快速搭建互动效果的框架,web2py,后来改成Django了

可以访问here看效果

发表在 计算机视觉 | 标签为 | 留下评论

mac Air 离线blog测试

从mac Air上面测试

下载了一个离线的blog编辑软件macJournal,尝试ing,发现不是很好用,因为不是所见即所得。

于是就更换到了ecto,发现还可以凑合用。

image.tiff

发表在 未分类 | 标签为 | 留下评论

微软学术api申请页面

Title: Application for Microsoft Academic Search App ID

Contact Person: ____ZhangTianlei__________

Contact Email: _______ztl2004@gmail.com_______

Project Brief Introduction:

I want to setup a web site that recommend papers to new comers of certain research field, because I found it’s really hard for us to obtain a reading list by ourself.

several features:

recommendation based on your paper reading history.

recommendation based on your friends.

ask somebody personally for paper.

wiki page.

tagging paper.

Project Web URL (if applicable): 203.91.121.3:8080

发表在 未分类 | 一条评论