图像特征之:haarlike
参考 ###Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征。Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述特定走向(水平、垂直、对角)的结构。 基本haarlike特征如下 ###Haar Like特征值的计算-积分图积分图就是只遍历一次图像就可以求出图像中所有区域像素和的快速算法,大大的提高了图像特征值计算的效率。积分图主要的思想是将图像从起点开始到各个点所形成的矩形区域像素之和作为一个数组的元素保存在内存中,当要计算某个区域的像素和时可以直接索引数组的元素,不用重新计算这个区域的像素和,从而加快了计算(这有个相应的称呼,叫做动态规划算法)。积分图能够...
屏幕蓝光七大危害,可能导致癌变
转载 华盛顿邮报日前报道:哈佛大学研究表明,睡前玩智能手机,看电视剧或玩电子游戏,电子设备发出的光线,特别是蓝光,能够抑制褪黑素的分泌,打扰睡眠,增加自身重大疾病的发生率。其中青少年受光线的影响,比成年人更大!###褪黑素调整昼夜节律何为褪黑素?人脑部深处,有一个像松果般大小的“松果体”,它分泌出来的激素,叫褪黑素,它在调整人体的昼夜节律方面发挥着重要作用。下丘脑“视交叉上核”是人体生物钟的控制中心,它根据视网膜接收的每日光暗的规律,影响着褪黑素的制造。夜幕降临后,光刺激减弱,在视交叉上核的作用下,松果体合成褪黑素的酶类活性增强,其分泌在凌晨2-3点达到高峰,然后渐渐减少,直至天明,日出后,停止分泌。因褪黑素是在黑暗的情况下被制造出来的,因此亦被称为“黑暗荷尔蒙”,其讯号,是昼夜规律的一部分。###褪黑素是“体内安眠药”褪黑素和睡眠有何关系?诺贝尔奖得主阿克塞尔罗德博士曾经试验证实:夜间褪黑素水平的高低,直接影响到睡眠的质量。为何会如此?因为,褪黑素的主要功能,是让动物产生睡意,从而调节每天的睡眠—清醒周期。褪黑素影响睡眠的机制是多方面的,它可通过对神经内分泌系统、神经递质及其受...
vs2008 output 输出结果
在vs2008的时候,如果你想查看一些变量的值,一是可以输出到文本,一是可以添加到watch,但是对于一些数组指针,却不是很好使了,这时一个可行的方法是把结果直接打印到output窗口中: #include <Windows.h> #include <tchar.h> void gcloutput(_TCHAR* format, ...) { va_list args; va_start(args, format); _TCHAR buf[256]; _vstprintf_s(buf, format, args); OutputDebugString(buf); va_end(args); } 相应调用方法如printf gcloutput(_T("ID is %d\n"),id);
轮廓跟踪及检测
效果图如上所示,主要完成轮廓的跟踪及内外轮廓检测,轮廓跟踪代码如下所示: function pt =BoundaryTrack(bw, pstart) % 单个边缘跟踪,pstart为联通区右下方的像素点 当边缘位于边界处,无法跟踪,需将 % 图像人为扩大2*2像素并置0,并将最后结果做边界处理 [row, col]= size(bw); k=0; flag = 1; ptcurrent = pstart; off=[1 0; 1 1; 0 1; -1 1; -1 0; -1 -1; 0 -1; 1 -1]; pt=[pstart.x pstart.y]; while flag flag = 0; for i =1:8 k=bitand(k,7); x = ptcurrent.x + off(k+1,1); y = ptcurrent.y + off(k+1,2); if x>=1 && x <=col && y>=1 && y <=row i...
os10.9 安装cmake的问题
最近要用opencv,对于版本控制有强烈要求的我,必然要安装最新版的opencv,可是在安装的时候却出现了很多问题,第一个就是cmake,用安装包安装的cmake是3.01版本的,在命令行里确实2.8X版本的,燧象删除老的版本,一直不成功,后来主要到电脑上有macport软件,又有homebrew软件,两个区别,大家可以搜一下,随卸载macport,用homebrew安装cmake时候又出现一堆问题,一直说没有c编译器,可在命令行中明明又gcc,却说没有 ,添加环境变量也不行,后来试着安装了一下command line tool,搞定,我就纳闷了,xcode6.0里面没有集成吗?网上搜了一下,还真没有,要安装只是换了一个地方:teminnel中输入: xcode-select --install 安装完command line tool 再来安装cmake, ./bootstrap make make install 或则直接用homebrew安装 brew install cmake 最后安装opencv cd opencv3.01 mkdir build cd build ...
Delaunay三角剖分
参考 code function Delaunary(pt) % 生成三角面片点云 edgeHull=ConvexHull(pt); figure,plot(pt(:,1),pt(:,2),'b.'),axis equal,hold on triout=[]; newIndex = -1; len = 1;len1= 1; index = 1; while index <= length(edgeHull) edge = edgeHull(index); index = index + 1; len = length(edgeHull); len1= length(triout); dex = [edge.start edge.end]; % 判断左三角形是否存在,存在,则判断右三角行 if edge.lefttri == -1 newIndex = -1; % 新选取点索引 angle12Max = 0; angle23Max = 0; ve...
计算点云凸包
计算点云凸包其主要思路为:1)搜寻X坐标最小的点,在此称为startPoint,从该点开始搜寻下一点,本例中以逆时针方向来搜寻边界;2)现定义一个虚拟点(该点并不存在)位置为startPoint正北方向,该点与startPoint形成一个向量Vector1,下一点(判断是否为边界点的点,或称选取的点)与startPoint也形成一个向量Vector2,则判断该选取的点是外围边界点所要满足的条件为向量Vector2与向量Vector1之间的夹角最大;3)按同样的方式,新形成的向量Vector1为新选取的外围边界点与上一个外围边界点形成的向量,向量Vector2为选取的点与新选取的外围边界点形成的向量,判断该选取的点是外围边界点所要满足的条件仍然为向量Vector2与向量Vector1之间的夹角最大;4)按此思路循环进行,直到找到一个边界点与startPoint相同。 code: function out = ConvexHull(pt) % 获取二维点集凸包 len = size(pt,1); [~, minDex] = min(pt,[],1); startIndex = min...
点到3D圆的距离
如下图所示,圆的中心为C0, 半径为R, 任意一点P0到圆的距离为D, P0到圆心的距离为L, 已知圆的法向量为vector, 其与C0P0的夹角为theta则根据余玄定理可知: D = sqrt(L^2+R^2-2*L*R*cos(90-theta))
vs2008 将原有tab空格设置为空格符号
1、首先将设置tab的空格缩进:Tools –> Options –> Text Editor”,如果是编写C/C++程序,就打开“C/C++–>Tabs”,在这里,选中“Insert spaces”即可 2、显示空格:ctrl+shift+*快捷键,或者Edit->Advanced->View White Space: 3、转换:选择代码块,Edit->Advanced->Format Selection (Ctrl+K,Ctrl+F:)
根据旋转前后向量求旋转矩阵
如果已知旋转前后向量的变化,如何求旋转矩阵呢?1、旋转角度:已经旋转前向量P及旋转后向量Q,由点积定义可知 P.Q =|P| |Q| cos(theta) 2、旋转轴:由上可知,旋转角所在平面为P和Q构成的平面,那么旋转轴必定垂直于该平面, A X B =(a2b3-a3b2)i + (a3b1-a1b3)j + (a1b2-a2b1)k 3、根据罗德里格旋转公式求旋转矩阵 .png) 4、Code function RotateMatrix=F_GetRotateMatrix(vectsrc,vectdst) angle=acos(dot(vectsrc,vectdst)); vector=cross(vectsrc,vectdst); % normalization vector=vector/norm(vector); cost=cos(angle);sint=sin(angle); x=vector(1);y=vector(2);z=vector(3); ...
