创客+DIY:自平衡双轮车[转载]

转载自:http://www.do-idea.org/item/show/61.html

项目负责人:郑岩峰、向上等

很多人在网上都看到过在硅谷穿行的一种2轮小车,没错就是segway,世界最先进的自平衡车。每个第一次见到自平衡车的人,都被它的神奇所震撼,这种看似违背自然规律的小车让很多技术宅都幻想能拥有一辆,作为创客的我们自然不会错过,我们决定自己做一辆。其实实现一个基本的自平衡车不是很复杂,学会使用一些传感器,了解单片机编程,再掌握一些PID自动控制的知识就可以做出一辆自平衡车。

需求分析

1.实现陀螺仪和加速度计采样数据的换算;
2.实现PID自动控制和信号滤波;
3.arduino协调工作;

建站心得:用 SAE 建 WordPress 博客还真是有点小贵啊

原因

目前用 SAE 做博客,忍受了各种限制,修改很多插件主题来使用Storage之类的,花了很多时间折腾。

虽然速度还不错,用起来也挺好的。SAE 自己说是按需收费,确实是这样,但是,但是这个按需收费还真是有点小贵啊。

虽说我已经是初级开发者了,免去了应用租金。每个应用每天租金是5云豆,可是,这是杯水车薪啊。真想换成博客主机,回头在 SAE 上成为中级开发者之后再回来吧!

首先看看这两个月的云豆消耗量吧!(看下面三幅截图)

注:¥1元=100云豆

两个月的云豆消耗量:

MATLAB数字图像处理工具箱函数详解[转载]

常用图像处理函数表

本表转载自:http://blog.sina.com.cn/s/blog_89cb90270101eem9.html

表1 图像显示
函数名 功能说明 函数名 功能说明
colorbar 颜色条显示 montage 按矩形剪辑方式显示多帧图像
getimage 从坐标系中获取图像数据 immovie 从多帧索引图像中制作电影
image 建立显示图像 movie 播放电影
subimage 在同一图像窗口显示多个图像 trueszie 调整图像显示大小
imagesc 调整数据并显示图像 warp 显示图像为纹理映射表面
imshow 图像显示 zoom 二维图形放大或缩小
表2 图像文件输入/输出
函数名 功能说明 函数名 功能说明
imread 图像文件读入 load 将以mat为扩展名的图像文件调入到内存
imwrite 图像写出 save 将内存变量中图像保存到mat文件中
dicomread 读取DICOM图像 dicomwrite 输出DICOM图像
iminfo 查看图形信息    
表3 图像像素值及其统计
函数名 功能说明 函数名 功能说明
impixel 返回选定图像像素颜色值 imcontour 画图像数据轮廓(等高线,等值线)
improfile 图像中沿一个路径的数据值计算 imhist 求图像数据直方图
mean2 求均值 corr2 求相关系数
std2 求标准差    
表4 图像分析
函数名 功能说明 函数名 功能说明
edge 灰度图像边缘检测 qtgetblk 获得四叉树分解块值
qtecomp 执行四叉树分解 qtsetblk 设置四叉树分解块值
表5 图像增强及平滑
函数名 功能说明 函数名 功能说明
imadjust 对比度调整 medfilt2 二维中值滤波器
histeq 直方图均衡 ordfilt2 顺序统计滤波器
imnoise 给图像增加噪声 wiener2 二维自适应除噪滤波器
表6 图像线性滤波及二维线性滤波器设计
函数名 功能说明 函数名 功能说明
conv2 二维卷积 freqz2 计算二维频率响应
convmtx2 计算二维卷积矩阵 fsamp2 用频率抽样设计二维FIR滤波器
convn 多维卷积 ftrans 用频率抽样转换二维FIRlbq
filter2 二维线性数字滤波器 fwind1 用一维窗口方法设计二维FIR滤波器
fspecial 产生预定义滤波器 fwind2 用二维窗口方法设计二维FIR滤波器
frespace 确定二维频率响应间隔    
表7 图像变换
函数名 功能说明 函数名 功能说明
fft 计算一维快速Fourier变换 dct 计算离散余弦变换
ifft 计算一维FFT的逆变换 idct 计算离散反余弦变换
fft2 计算二维FFT dct2 计算2D离散余弦变换
ifft2 计算二维逆FFT idct2 计算2D反离散余弦变换
fftn 计算多维FFT dctmtx 计算TCT矩阵
ifftn 计算多维逆FFT radon 计算Radon变换
fftshift 直流分量移到频谱中心    
表8 图像领域及操作
函数名 功能说明 函数名 功能说明
bestblk 选择块处理的块大小 colfilt 使用列方向函数进行领域运算
blkproc 对图像实行不同的块处理 im2col 重排图像块为矩阵列
col2im 重排矩阵列成图像块 nlfilter 进行一般领域计算
表9 二值图像操作
函数名 功能说明 函数名 功能说明
applylut 使用查找表进行领域操作 bwperim 确定二值图像中的目标边界
bwarea 计算二值图像中的目标区域 bwselect 选择二值图像中的目标
bweuler 计算二值图像中的欧拉数 dilate 对二值图像进行膨胀计算
bwfill 二值图像背景区域填充 erode 对二值图像进行寝蚀运算
bwlabel 标识二值图像中的连接成分 makelut 构造查找表(applylut)使用
bwmorph 二值图像形态运算    
表10 基于区域的图像处理
函数名 功能说明 函数名 功能说明
roicolor 根据颜色选择要处理的区域 roifilt2 对要处理区域滤波
roifill 在任意区域内平滑差值 roipoly 选择要处理的多边形区域
表11 图像几何运算
函数名 功能说明 函数名 功能说明
imcrop 图像剪裁 imrotate 图像旋转
imresize 图像大小调整 interp2 二维数据差值
表12 图像颜色图操作
函数名 功能说明 函数名 功能说明
brighten 颜色图像变亮或变暗 colormap 设置获取图
cmpermute 重新排列颜色图中的颜色 imapprox 由颜色较少的图像近似索引图像
cmunique 寻找唯一的颜色图及相应的图像 rgbplot 绘制RGB颜色图
表13 颜色控件转换
函数名 功能说明 函数名 功能说明
hsv2rgb 将HSV颜色转化为RGB颜色值 mtsc2rgb 将NTSC值转换为RGB颜色空间值
rgb2hsv 将RGB颜色值转换为HSV颜色值 rgb2ntsc 将RGB值转换为NTSC颜色空间值

【转载自百度文库】

第3章 MATLAB数字图像处理工具箱

3.1 MATLAB图像预处理

3.1.1图像处理的基本操作

1. 读入并显示一幅图像

clear               %清除所有的工作平台变量

close all           %关闭已打开的图形窗口

I=imread (‘pout.tif’);   %读取图像pout.tif(该图像是图像处理工具箱自带的图像),

%存储在一个名为I的数组中

imshow(I)           %显示图像I

建站:8款本地PHP环境搭建工具[转载+简单评论]

8款本地PHP环境搭建工具

1. XAMPP(非常好用,推荐)

XAMPP是一款比较强大的本地测试平台,它集成了必须的三个功能,还带有 FileZilla,软件带有一个控制面板,在里面可以把Apache、MySql和FileZilla三者注册为系统服务或者卸载服务,有服务启动的控 制按钮,而且在窗口下部还能看到服务的运行信息。虽说面板是英文的,但清楚易懂。注册为系统服务有个好处就是开机能够自动运行,但是会消耗一定的系统资 源,怎么取舍用户自己来定。安装成功,服务也启动成功后,就可以把浏览器打开输入http://localhost/,试试是否成功。在XAMPP的网页 选项里,有中文支持。

2. Wamp Server

它的官方网站没有中文,但是程序支持中文。启动安装程序后,它会提示你请先卸载旧版,不支持 覆盖式的升级,然后一路NEXT就能安装成功。它在任务托盘里有个图标,如果服务启动异常,它就是红色的;如果部分异常,它就变成黄色;如果是一切正常, 那么它就变成了白色。这些不同的颜色警示,你很容易判断当前你的localhost能不能打开。它还能切换在线和离线状态,选项中的文语言项中也有简体中 文可选,很不错。

机器视觉:分享一些OpenCV实现立体视觉的经验[转载]

转载自:Footprint:Chengyao’s Technical Blog
尝试用OpenCV来实现立体视觉也有一段时间了,主要的参考资料就是Learning OpenCV十一、十二章和OpenCV论坛上一些前辈的讨论。过程中磕磕碰碰,走了不少弯路,终于在前不久解决了最头大的问题,把整个标定、校准、匹配的流程调试成功。(虽然还有一些问题至今尚未搞清)

在这里写这篇文章,第一方面是给自己一个总结,第二方面是感觉OpenCV立体视觉方面的资料还是相当零散和不完整,新手入门需要花很长时间才能摸索出来,第三方面,也是自己在过程中有些问题仍旧迷迷糊糊,希望可以抛砖引玉。

1. 摄像头

我用的摄像头是淘宝上买的三维摄像头,两个USB Camera加一个可调节的支架。实物照片如下

1.1 三维摄像头实物图

双USB摄像头的OpenCV驱动可以参考以下链接

http://www.opencv.org.cn/index.php/使用DirectShow采集图像

将上面代码复制到自己的工程之后还需要对工程或者编译环境做一下设置

VC6下的详尽设置可以见代码的注释(修改工程的属性)

VS2008中的设置也可以参照代码注释中VC++2005的设置(修改编译环境)