科学网

 找回密码
  注册

tag 标签: 直方图

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

数字图像处理的图像增强技术——灰度变换
Xtravel 2014-5-24 11:53
在数字图像处理技术中,图像增强技术是一个特别关键的技术。图像增强,顾名思义,就是增强图像的可识别度,让本不清晰的图像变得清晰,让本不明显的细节更加突出。图像增强的实质,是把原来灰度较为集中的图像在灰度级上均匀分布,也即增加了图像的对比度。图像增强应用的关键技术是灰度变换与空间滤波,本节着重介绍灰度变换。 灰度变换分为负片变换、对数变换、指数变换和分段线性变换,其中分段线性变换又有对比拉伸、灰度切割和位图切割。灰度变换中较为重要的是直方图处理,又分为直方图均衡化和直方图规定化。下面简要介绍各种方法的MATLAB实现,以说明如何用MATLAB分析图像处理问题,为以后利用MATLAB进行算法验证与开发打下基础。在以下的程序中,f,g分别表示input和output。 %负片变换 g=imcomplement(f); %对数变换 g=log(1+double(f)); %对比拉伸 g=im2uint8(mat2gray(log(1+double(f)))); imshow(f),figure,imshow(g);%观察变换前后图像变化 %直方图均衡化 clear; f=imread(''); subplot(2,2,1) imshow(f) hold on subplot(2,2,2) imhist(f) g=imhist(f); g1=g(1:10:256); horz=1:10:256; subplot(2,2,3) bar(horz,g1) axis( ) set(gca,'xtick',0:50:255) set(gca,'ytick',0:100:1000) %直方图规定化 它与直方图均衡化不同之处仅在于histeq()函数的运用,在此不再赘述。 在思考过程中,我有一个问题:在对比拉伸中用了g=im2uint8(mat2gray(log(1+double(f))));直接用g=log(1+f)与上句有何区别?后来经过思考发现,MATLAB中存储数据要转换为uint8类型,而将double数据转换为uint8过程中,可能此数据不在【0,1】范围内,故用mat2gray函数将其转换为【0,1】的标准形式,然后用im2uint8转换为uint8类型存储。
8293 次阅读|0 个评论
玩儿出一篇论文来?
热度 6 lix 2013-7-15 02:21
在 谢谢张云关于对称 p(x) 的工作 评论 2 ,张云博主说:如果沿绝对公平线对称就要求反函数了。那太麻烦就算了,好像已经够一篇论文的份量了。我们已经证明了常数项,线性项、幂级数项,都能找到另一个三角形上相同 Ds 值的对应项。那么,利用台劳级数展开,应该很容易把已有的结论普适化。 至于用途,可以只讲在数字图像的星上自动分类。潜在的其它应用,包括社会经济学,等等,以后再说。不要忘了黄秀清、李宁博主的贡献。您们三位可以合著,如果愿意的话。其它有贡献的博主(含老邪)应该致谢。 补记:感谢各位评论。再重申一点,我不算作者,只是好玩。我老了,没人考核我的论文发表。所以宁肯写博文。轻松好玩。我建议黄秀清一作,张云二作,李宁三作兼通讯。进一步的工作可以解释:1)为什么中美两国可以有相近的几尼系数;2)为什么双峰不如单峰稳定;等等,我就不参合了,您们三位自己商量吧。
个人分类: 怪哉虫儿|3720 次阅读|7 个评论
谢谢张云关于对称p(x)的工作
热度 1 lix 2013-7-14 16:54
张云博主在博文 http://blog.sciencenet.cn/blog-729147-708021.html 作了很漂亮的工作。他讲: “ 我就我的理解先画个简单的:下面这两个函数应该符合文中 1 、 2 的要求,当然是属于没有归一化的,纵坐标不是概率,毕竟都到 2 了 ” 。 应该算是归一化的。概率不能大于 1 。但是概率密度是可以大于 1 的。概率密度函数甚至可以用 delta (冲激)函数来表述,就是密度可以无穷大,只要定义域无穷小,且其上积分小于 1 ,就行。 您的图一、二都作的不错。建议: 1 ) 定义 p(x)=2x, (蓝线表示),的对称密度分布 q(x) 为: q(x)=p(1-x)=2-2x (绿线表示)。 您事实上作了,但要强调定义,讲明是普适的。 p(x)=2x ,只是一个例子。 2 )图二最好标明“绝对公平线”以及绿线与蓝线分别夹成的面积。说明其等值(均为 1/6 )。 3 )最好此结论能公式化。 如果公式化作好了,以后的双峰分布就可以用作一个例子。否则只能用来加深理解。注意积累分布不单单是沿绝对公平线对称,而是又旋转了 180 度。 谢谢!
个人分类: 课件科普|3018 次阅读|2 个评论
好玩的直方图
热度 1 lix 2013-7-13 21:06
在 梦回吹角连营 里,老邪讲了,回到自己的正题。先简单重复一下将会用到的定义吧。 1. 直方图。横轴为像元( x )的灰度值,以一个 byte 为例,( 0-255 )或 (1 - 256 ),意义都是从纯黑到纯白。 2. 直方图的纵轴,为取得某灰度值像元的个数 p(x) 。直方图二轴可以视作连续数值的离散化。 3. 直方图的横轴、纵轴均可以归一化为 0-1 ,此时我们称 p(x) 为概率密度函数。 4. 当每一像元或取灰度值的概率完全相等时,我们称概率密度 p(x)=1 ,与横轴平行,高为 1 ,我们将其称为“机会均等线”。这是一条虚线,可以突破的。突破的原则,是 p(x) 从 0 到 1 积分等于 1 。 5. 机会均等线 p(x)=1 ,从 0 到 x 的积分,即 x 。到 x=1 止,称为绝对公平线,一条从 (0,0) 到 (1,1) 的虚线。 6. 其它任何 pdf ( x )从 0 到 x 的积分,称为累积分布曲线 P(x) 。 P(x) 必然满足: a )从 P(0)=0 到 P(1)=1 ; b ) P(x) 的导数不小于 0 。 7. 累积分布曲线 P(x) 可以保持在绝对公平线的右下角,也可以在保持在绝对公平线的左上角;也可以突破绝对公平线。我们称右下角为白(多黑少)三角,左上角为黑(多白少)三角。因其重心分别大于或小于 x = 0.5 。 8. 假定 P(x) 与绝对公平线之间所夹的面积为 G ,则仿基尼系数的定义 , 暂称 G/0.5 为 Ds 系数。 我们假定一条 P(x)=x**a, 当 a=1 时,就是绝对公平线。当 a1 时, x**a 是一簇充满了白三角的曲线。反之,当 a1 时, x**a 是一簇充满了黑三角的曲线。可以证明,每一条 a1 在白三角的曲线,对应一条黑三角的曲线 P(x)=x**(1/a), 二者的 Ds 系数相等。 那么,如果已知白三角的 p(x) 曲线和 Ds 系数,能不能在黑三角找到一条“对称”的 p(x) 曲线呢?老邪感到好玩,但“可怜白发生”。
个人分类: 课件科普|4941 次阅读|2 个评论
Matlab处理分子云数据的可能性(四)柱状图
qianlivan 2013-6-8 14:56
用matlab画直方图是非常直接、简单的,用hist函数就可以了,比如 hist(age) 其中age是一组云核的年龄组成的数组。也可以 hist(age,bin) 其中bin指定了每个竖条的位置(也就是宽度)。也可以指定直方图的颜色 hist(age,bin) h = findobj(gca,'Type','patch'); set(h,'FaceColor','r','EdgeColor','w') 其中FaceColor表示填充颜色,EdgeColor表示竖条边缘的颜色。
个人分类: 知识|9769 次阅读|0 个评论
布局页中的图形编辑之一:图形叠加
热度 2 FlowJo 2013-4-22 11:18
布局页中的图形编辑之一:图形叠加 作者:蔡何青,FlowJo技术专员 在FlowJo的布局页里可以进行图形叠加、添加文本注释、绘制线条或箭头、对图形的坐标轴进行重命名等操作,这篇博文中将对图形叠加部分进行详细介绍,其余的内容将在下一篇博文中介绍。 一、直方图的两两叠加 演示数据:来源于一个抗体滴定实验(CD8-FITC),Sample 1为空白对照,Sample 2-8中抗体浓度按2倍梯度稀释。 目标:将每个样本的直方图分别与空白对照的直方图进行两两叠加 步骤: 1. 设门分析完成之后,打开布局编辑器,将工作台中Sample 1的Lymphocytes节点拖进布局页,得到Sample 1的直方图 2. 如下图所示:将工作台中Sample 2的Lymphocytes节点拖到布局页中Sample 1的直方图上进行重叠 3. 重叠后如下图所示:左边为重叠的直方图,右边为图片的Legend ①左键单击Legend前的颜色条,可以更改直方图线条的颜色, ②右键单击Legend中的样本名称,在打开的下拉菜单中可进行多种操作: Coloring:Filled进行颜色填充,Tinted进行较浅的着色(本例中使用的为Tinted),None为不进行处理 LineStyle:更改线条的类型,包括实线和虚线等 LineWeight:更改线条的粗细 ③右上角的Batch批量处理按钮处于不可用状态 4. 如果要激活batch按钮,进行特殊批量处理的话,例如希望将所有的实验样本都分别与这个对照样本进行重叠,那么需要将重叠的图形中Sample 1定为对照样本,这样在批处理的时候所有的实验样本都分别与这个对照样本进行重叠;双击重叠后的直方图,在Specify选项卡中双击Sample 1,将其勾选设定为对照样本 5. 点击批量处理Batch按钮,进行批量处理,所有样本的直方图都分别于对照样本进行了重叠,如下图所示: 二、多个直方图叠加 演示数据:来源于一个抗体滴定实验(CD8-FITC),Sample 1为空白对照,Sample 2-8中抗体浓度按2倍梯度稀释。 目标:将各个样本的直方图都与空白对照的直方图重叠在一起 步骤: 1. 重复“直方图两两叠加”步骤里的步骤1和2的分析 2. 将工作台中Sample 3 - Sample 8样本的Lymphocytes节点都拖到布局页中Sample 1的直方图上进行重叠;或者,到工作台的“编辑”菜单栏中“选择同一层次的节点”,将所有的Lymphocytes节点都选中,再一起拖到布局页中的直方图上进行叠加, 叠加之后得到的结果如下图所示: 3. 右键单击叠加之后的直方图,在下拉列表的“直方图”选项中可以进行“偏移”、“半偏移”、“立体偏移”和“重叠” 4. 各种偏移的结果如下图所示: 三、以不同的颜色显示不同的细胞群 目标:在CD4 vs. CD8的二维点图中,用不同的颜色显示CD8 T细胞群和CD4 T细胞群 步骤: 1. 设门分析完成之后,打开布局编辑器,将工作台中D1样本的T Cells节点拖进布局页,得到CD4 vs. CD8的二维点图 2. 如下图所示,再分别将CD4 T Cells节点和CD8 T Cells节点拖到已有的二维点图上进行重叠 3. 重叠后的结果如下,分别用不同的颜色显示不同的细胞群
个人分类: FlowJo使用|30102 次阅读|4 个评论
[转载]使用R语言做直方图
热度 1 Bearjazz 2013-3-7 17:40
[转载]使用R语言做直方图
原文地址 Kid E 发表于 2009-03-23 01:01:15 http://liyinhao.ycool.com/post.3228142.html 首先是一串很简单的数据,有30个元素: 105 93 80 109 112 88 98 100 116 119 95 97 96 107 89 80 81 69 85 86 88 90 91 86 81 86 88 82 95 108 把它逐行打到一个TXT文件中去,命名为ex1.txt,保存在目录E:\Data下面。 然后打开R, 输入代码 setwd=("E:/Data") setwd()函数的作用是指定工作目录,这样以后进行文件读写的时候就可以直接引用工作目录下的文件名,而不用加上路径了。输入getwd()可以查看当前R的工作目录。 这里有个细节要注意,就是路径的分隔符一定要打斜杠/,不能按照WINDOWS里面的方式打反斜杠\,否则R会报错。 然后在R的控制台里继续输入 c-scan("ex1.txt") scan()是读取文件的函数,一般用来读按行贮存的数据的,返回值是一串向量。这里我们把ex1.txt里的数据赋给了变量c,赋值号是-。 然后可以对向量c作直方图, hist(c) 输出结果就是这样: hist()这个函数有很多参数的,这里介绍下breaks的用处先。 hist(c,breaks=seq(70,130,6)) breaks的作用就是规定直方图绘制时的单元格区间,seq(70,130,6)的意思是构建一组从70到130,公差为6的等差数列。 注意:有时候R会报错说breaks没有跨距整个'x'的范围,那是因为seq的计算方式决定的,例如seq(1,5,3)返回的是向量(1,4)而不是向量(1,4,7),避免这个问题的方法在于有时候把总区间规定的大些就行了。 效果如下: 然后问题就出现了,图中的坐标轴上的数值貌似是R自动分配的,也就是说hist()函数中我找不到任何的参数来改变坐标轴上的数字。于是我们只能借助于R中低位作图命令(low-level plotting commands),低位作图作用于已有图形之上。 首先要不显示x轴和y轴的数值 输入 hist(c,breaks=seq(70,130,6),xaxt="n",yaxt="n") 然后利用axis()重新绘制两条坐标轴: axis(side=1,at=seq(70,130,6)) axis(side=2,at=seq(0,8,1)) 其中参数side规定了绘制方向,1为x轴,2为y轴。 参数at则定义了坐标轴的数值,一般用向量表示。 其余的参数请自行查阅help。 最终效果如下: 此外,hist()函数中的main参数可以修改直方图的标题,xlab和ylab可以修改坐标轴的描述。更多的自行查看帮助文档。个人觉得R-2.8.1的帮助文档做的超级到位,遇到不熟悉的函数输入?加函数名即可。例如?hist。
个人分类: 我的研究|27718 次阅读|1 个评论
[转载]OpenCv直方图对比图片的相似性
songhaiyu 2013-2-4 12:28
http://blog.163.com/woshitony111@126/blog/static/71379539201262202820650/ 原理 要比较两个直方图( and ), 首先必须要选择一个衡量直方图相似度的 对比标准 ( ) 。 OpenCV 函数 compareHist 执行了具体的直方图对比的任务。该函数提供了4种对比标准来计算相似度: Correlation ( CV_COMP_CORREL ) 其中 是直方图中bin的数目。 Chi-Square ( CV_COMP_CHISQR ) Intersection ( CV_COMP_INTERSECT ) Bhattacharyya 距离( CV_COMP_BHATTACHARYYA )
个人分类: 数学&研究|8198 次阅读|0 个评论
直方图生成以及拉伸
a6657266 2012-12-6 15:35
搞了半天,总算是把直方图给搞明白了,总结了一下,对直方图生成再拉伸,代码如下: int size=256; float range ={range}; CvHistogram* hist=cvCreateHist(1,size,CV_HIST_ARRAY,ranges,1); cvCalcHist(scale1,hist,0,NULL); float max=0; cvGetMinMaxHistValue(hist,NULL,max,NULL,NULL); double max_indensity=0; cvMinMaxLoc(scale1,NULL,max_indensity,NULL,NULL); IplImage* dst=cvCreateImage(cvSize(256,300),8,3); cvSet(dst,cvScalarAll(255),0); double bin_width=(double)dst-width/max_indensity; double bin_unith=(double)dst-height/max; for(int i=0;i256;i++) { CvPoint p0=cvPoint(i*bin_width,dst-height);//左下角点 CvPoint p1=cvPoint((i+1)*bin_width,dst-height-cvGetReal1D(hist-bins,i)*bin_unith);//右上角点 cvRectangle(dst,p0,p1,cvScalar(0,255,0),-1,8,0); }
4066 次阅读|0 个评论
[转载]CvMat Mat IplImage 之间相互转换
yyjsunny 2012-11-12 15:35
一、Mat类型:矩阵类型,Matrix。 在openCV中,Mat是一个多维的密集数据数组。可以用来处理向量和矩阵、图像、直方图等等常见的多维数据。 Mat有3个重要的方法: 1、Mat mat = imread(const String* filename); 读取图像 2、imshow(const string frameName, InputArray mat); 显示图像 3、imwrite (const string filename, InputArray img); 储存图像 Mat类型较CvMat与IplImage类型来说,有更强的矩阵运算能力,支持常见的矩阵运算。在计算密集型的应用当中,将CvMat与IplImage类型转化为Mat类型将大大减少计算时间花费。 A.Mat - IplImage 同样只是创建图像头,而没有复制数据。 例: // 假设Mat类型的imgMat图像数据存在 IplImage pImg= IplImage(imgMat); B.Mat - CvMat 与IplImage的转换类似,不复制数据,只创建矩阵头。 例: // 假设Mat类型的imgMat图像数据存在 CvMat cvMat = imgMat; 二、CvMat类型与IplImage类型:“图像”类型 在openCV中,Mat类型与CvMat和IplImage类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,openCV对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。 补充:IplImage由CvMat派生,而CvMat由CvArr派生即CvArr - CvMat - IplImage CvArr用作函数的参数,无论传入的是CvMat或IplImage,内部都是按CvMat处理。 1.CvMat A.CvMat- IplImage IplImage* img = cvCreateImage(cvGetSize(mat),8,1); cvGetImage(matI,img); cvSaveImage("rice1.bmp",img); B.CvMat-Mat 与IplImage的转换类似,可以选择是否复制数据。 Mat::Mat(const CvMat* m, bool copyData=false); 在openCV中,没有向量(vector)的数据结构。任何时候,但我们要表示向量时,用矩阵数据表示即可。 但是,CvMat类型与我们在线性代数课程上学的向量概念相比,更抽象,比如CvMat的元素数据类型并不仅限于基础数据类型,比如,下面创建一个二维数据矩阵: CvMat* cvCreatMat(int rows ,int cols , int type); 这里的type可以是任意的预定义数据类型,比如RGB或者别的多通道数据。这样我们便可以在一个CvMat矩阵上表示丰富多彩的图像了。 2.IplImage 在类型关系上,我们可以说IplImage类型继承自CvMat类型,当然还包括其他的变量将之解析成图像数据。 IplImage类型较之CvMat多了很多参数,比如depth和nChannels。在普通的矩阵类型当中,通常深度和通道数被同时表示,如用32位表示RGB+Alpha.但是,在图像处理中,我们往往将深度与通道数分开处理,这样做是OpenCV对图像表示的一种优化方案。 IplImage的对图像的另一种优化是变量origin----原点。在计算机视觉处理上,一个重要的不便是对原点的定义不清楚,图像来源,编码格式,甚至操作系统都会对原地的选取产生影响。为了弥补这一点,openCV允许用户定义自己的原点设置。取值0表示原点位于图片左上角,1表示左下角。 dataOrder参数定义数据的格式。有IPL_DATA_ORDER_PIXEL和IPL_DATA_ORDER_PLANE两种取值,前者便是对于像素,不同的通道的数据交叉排列,后者表示所有通道按顺序平行排列。 IplImage类型的所有额外变量都是对“图像”的表示与计算能力的优化。 A.IplImage - Mat IplImage* pImg = cvLoadImage("lena.jpg"); Mat img(pImg,0); // 0是不複製影像,也就是pImg與img的data共用同個記憶體位置,header各自有 B.IplImage - CvMat 法1:CvMat mathdr, *mat = cvGetMat( img, mathdr ); 法2:CvMat *mat = cvCreateMat( img-height, img-width, CV_64FC3 ); cvConvert( img, mat ); C.IplImage*- BYTE* BYTE* data= img-imageData; CvMat和IplImage创建时的一个小区别: 1、建立矩阵时,第一个参数为行数,第二个参数为列数。 CvMat* cvCreateMat( int rows, int cols, int type ); 2、建立图像时,CvSize第一个参数为宽度,即列数;第二个参数为高度,即行数。这 个和CvMat矩阵正好相反。 IplImage* cvCreateImage(CvSize size, int depth, int channels ); CvSize cvSize( int width, int height ); IplImage内部buffer每行是按4字节对齐的,CvMat没有这个限制 补充: A.BYTE*- IplImage* img= cvCreateImageHeader(cvSize(width,height),depth,channels); cvSetData(img,data,step); //首先由cvCreateImageHeader()创建IplImage图像头,制定图像的尺寸,深度和通道数; //然后由cvSetData()根据BYTE*图像数据指针设置IplImage图像头的数据数据, //其中step指定该IplImage图像每行占的字节数,对于1通道的IPL_DEPTH_8U图像,step可以等于width。
5303 次阅读|0 个评论
[转载]方向梯度直方图(HOG)学习笔记二 HOG正篇
hailuo0112 2012-10-30 09:59
1.介绍 HOG(Histogram of Oriented Gradient) 是 2005 年 CVPR 会议上,法国国家计算机科学及自动控制研究所的Dalal等人提出的一种解决人体目标检测的图像描述子,该方法使用 梯度方向直方图 (Histogram of Oriented Gradients,简称HOG)特征来表达人体,提取人体的外形信息和运动信息,形成丰富的特征集。 2.生成过程 1)图像归一化 归一化图像的主要目的是提高检测器对光照的鲁棒性,因为实际的人体目标可能出现的各种不同的场合,检测器,必须对光照不太敏感才会有好的效果。 2)利用一阶微分计算图像梯度 图像平滑 对于灰度图像,一般为了去除噪点,所以会先利用离散高斯平滑模板进行平滑:高斯函数在不同平滑的尺度下进行对灰度图像进行平滑操作,Dalal等实验表明在下,人体检测效果最佳(即不做高斯平滑),使得错误率缩小了约一倍。不做平滑操作,可能原因:图像时基于边缘的,平滑会降低边缘信息的对比度,从而减少图像中的信号信息。 梯度法求图像梯度 一阶微分处理一般对灰度阶梯有较强的响应 一阶微分: img src="http://s2.sinaimg.cn/middle/60e6e3d54ca947595ecf1690" real_src="http://s2.sinaimg.cn/middle/60e6e3d54ca947595ecf1690" width="240" height="180" name="image_operate_77081348641641967" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs2.sinaimg.cn%2Fmiddle%2F60e6e3d54ca947595ecf1%26690" action-type="show-slide" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " 对于函数f(x,y),在其坐标(x,y)上的梯度是通过如下二维列向量定义的: 这个向量的模值由下式给出: img src="http://s12.sinaimg.cn/middle/60e6e3d54ca94725cf5eb690" real_src="http://s12.sinaimg.cn/middle/60e6e3d54ca94725cf5eb690" width="222" height="134" name="image_operate_68091348640372058" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs12.sinaimg.cn%2Fmiddle%2F60e6e3d54ca94725cf5eb%26690" action-type="show-slide" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " img src="http://s12.sinaimg.cn/middle/60e6e3d54ca947730b75b690" real_src="http://s12.sinaimg.cn/middle/60e6e3d54ca947730b75b690" width="434" height="77" name="image_operate_71441348641641874" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " 因为模值的计算开销比较大,一般可以按如下公式近似求解: img src="http://s2.sinaimg.cn/middle/60e6e3d54ca94cd948021690" real_src="http://s2.sinaimg.cn/middle/60e6e3d54ca94cd948021690" name="image_operate_99871348641641847" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " Dalal等人利用许多一阶微分模板进行求梯度近似值,但在实验中表明模板 效果最好。 采用模板 为例计算图像梯度以及方向,通过梯度模板计算水平和垂直方向的梯度分别如下: img src="http://s8.sinaimg.cn/middle/60e6e3d54ca94d60565e7690" real_src="http://s8.sinaimg.cn/middle/60e6e3d54ca94d60565e7690" width="342" height="62" name="image_operate_44121348640735736" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs8.sinaimg.cn%2Fmiddle%2F60e6e3d54ca94d60565e7%26690" action-type="show-slide" style="margin-top: 0pt; margin-right: auto; margin-bottom: 0pt; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; display: block; " 其中,分别表示该像素点的水平,垂直梯度值。计算该 像素点的梯度值(梯度强度)以及梯度方向 : img src="http://s11.sinaimg.cn/middle/60e6e3d54ca94da8ea37a690" real_src="http://s11.sinaimg.cn/middle/60e6e3d54ca94da8ea37a690" name="image_operate_33191348640735360" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs11.sinaimg.cn%2Fmiddle%2F60e6e3d54ca94da8ea37a%26690" action-type="show-slide" style="margin-top: 0pt; margin-right: auto; margin-bottom: 0pt; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; display: block; " 对于梯度方向的范围限定,一般采用无符号的范围,故梯度方向可表示为: img src="http://s5.sinaimg.cn/middle/60e6e3d54ca94e4d03bd4690" real_src="http://s5.sinaimg.cn/middle/60e6e3d54ca94e4d03bd4690" width="240" height="180" name="image_operate_93481348640877775" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs5.sinaimg.cn%2Fmiddle%2F60e6e3d54ca94e4d03bd4%26690" action-type="show-slide" style="margin-top: 0pt; margin-right: auto; margin-bottom: 0pt; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; display: block; " 3)基于梯度幅值的方向权重投影 HOG结构 通常使用的HOG结构大致有三种:矩形HOG(简称为R-HOG),圆形HOG和中心环绕HOG。它们的单位都是Block(即块)。Dalal的试验证明矩形HOG和圆形HOG的检测效果基本一致,而环绕形HOG效果相对差一些。 img src="http://s2.sinaimg.cn/middle/60e6e3d54ca94eceea961690" real_src="http://s2.sinaimg.cn/middle/60e6e3d54ca94eceea961690" width="240" height="180" name="image_operate_3711348640959272" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs2.sinaimg.cn%2Fmiddle%2F60e6e3d54ca94eceea961%26690" action-type="show-slide" style="margin-top: 0pt; margin-right: auto; margin-bottom: 0pt; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; display: block; " 矩形HOG块的划分: 一般一个块(Block)都由若干单元(Cell)组成,一个单元都有如干个像素点组成。 img src="http://s15.sinaimg.cn/middle/60e6e3d54ca94f194ba3e690" real_src="http://s15.sinaimg.cn/middle/60e6e3d54ca94f194ba3e690" name="image_operate_25331348641640799" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs15.sinaimg.cn%2Fmiddle%2F60e6e3d54ca94f194ba3e%26690" action-type="show-slide" style="margin-top: 0pt; margin-right: auto; margin-bottom: 0pt; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; display: block; " img src="http://s15.sinaimg.cn/middle/60e6e3d54ca94f80e4c1e690" real_src="http://s15.sinaimg.cn/middle/60e6e3d54ca94f80e4c1e690" name="image_operate_69811348641260958" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs15.sinaimg.cn%2Fmiddle%2F60e6e3d54ca94f80e4c1e%26690" action-type="show-slide" style="margin-top: 0pt; margin-right: auto; margin-bottom: 0pt; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; display: block; " 在每个Cell中有独立做梯度方向统计,从而以梯度方向为横轴的的直方图,前面我们已经提到过,梯度方向可取0度到180度或0度~360度,但dalal实验表明,对于人体目标检测0度~180度这种忽略度数正负级的方向范围能够取得更好的结果。然后又将这个梯度分布平均分成 个方向角度(orientation bins),每个方向角度范围都会对应一个直方柱。 img src="http://s11.sinaimg.cn/middle/60e6e3d54ca9503ae480a690" real_src="http://s11.sinaimg.cn/middle/60e6e3d54ca9503ae480a690" name="image_operate_83671348641639962" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs11.sinaimg.cn%2Fmiddle%2F60e6e3d54ca9503ae480a%26690" action-type="show-slide" style="margin-top: 0pt; margin-right: auto; margin-bottom: 0pt; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; display: block; " 根据Dalal等人实验,在人体目标检测中,在无符号方向角度范围并将其平均分成9份(bins)能取得最好的效果,当bin的数目继续增大效果改变不明显,故一般在人体目标检测中使用bin数目为9范围0~180度的度量方式。 Block中各个参数的最终选取: 对于人体对象检测,块的大小为3×3个单元格,单元格的大小为6×6个象素时,检测效果是最好的,错误率约为10%左右。块的大小为2×2个单元格,单元格大小为8×8个象素时,也相差无几。6-8个象素宽的单元格,2-3个单元格宽的块,其错误率都在最低的一个平面上。块的尺寸太大时标准化的作用被削弱了从而导致错误率上升,而如果块的尺寸太小时,有用的信息反而会被过滤掉。 在实际应用中,在Block和Cell划分之后,对于得到各个像区域中,有时候还会为了进行一次高斯平滑,但是对于人体目标检测等问题,该步骤往往可以忽略,实际应用效果不大,估计在主要还是去除区域中噪点,因为梯度对于噪点相当敏感。 对梯度方向的投影权重方式的选取: 对于梯度方向的加权投影,一般都采用一个权重投影函数,它可以是像素点的梯度幅值,梯度幅值的平方根或梯度幅值的平方,甚至可以使梯度幅值的省略形式,它们都能够一定程度上反应出像素上一定的边缘信息。根据Dalal等人论文的测试结果,采用梯度幅值量级本身得到的检测效果最佳,使用量级的平方根会轻微降低检测结果,而使用二值的边缘权值表示会严重降低效果(约为5%个单位10-4FPPW(False Positives PerWindow))。 4)HOG特征向量归一化 对block块内的HOG特征向量进行归一化。对block块内特征向量的归一化主要是为了使特征向量空间对光照,阴影和边缘变化具有鲁棒性。还有归一化是针对每一个block进行的,一般采用的归一化函数有以下四种: img src="http://s14.sinaimg.cn/middle/60e6e3d54ca95119533ed690" real_src="http://s14.sinaimg.cn/middle/60e6e3d54ca95119533ed690" name="image_operate_861348641941768" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs14.sinaimg.cn%2Fmiddle%2F60e6e3d54ca95119533ed%26690" action-type="show-slide" style="margin-top: 0pt; margin-right: auto; margin-bottom: 0pt; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; display: block; " 在人体检测系统中进行HOG计算时一般使用L2-norm,Dalal的文章也验证了对于人体检测系统使用L2-norm的时候效果最好。 5)得出HOG最终的特征向量 img src="http://s4.sinaimg.cn/middle/60e6e3d54ca9518b964b3690" real_src="http://s4.sinaimg.cn/middle/60e6e3d54ca9518b964b3690" name="image_operate_22941348641963657" alt="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" title="方向梯度直方图(HOG,HistogramofGradient)学习笔记二HOG正篇" action-data="http%3A%2F%2Fs4.sinaimg.cn%2Fmiddle%2F60e6e3d54ca9518b964b3%26690" action-type="show-slide" style="margin-top: 0pt; margin-right: auto; margin-bottom: 0pt; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; display: block; " 3.HOG的应用: 主要用在object detection 领域,特别是行人检测,智能交通系统,当然也有文章提到把HOG用在手势识别,人脸识别等方面。 4.HOG与SIFT区别 HOG和SIFT都属于描述子,以及由于在具体操作上有很多相似的步骤,所以致使很多人误认为HOG是SIFT的一种,其实两者在使用目的和具体处理细节上是有很大的区别的。HOG与SIFT的主要区别如下: ① SIFT是基于关键点特征向量的描述。 ② HOG是将图像均匀的分成相邻的小块,然后在所有的小块内统计梯度直方图。 ③ SIFT需要对图像尺度空间下对像素求极值点,而HOG中不需要。 ④ SIFT一般有两大步骤,第一个步骤是对图像提取特征点,而HOG不会对图像提取特征点。 5.HOG的优点: HOG表示的是边缘(梯度)的结构特征,因此可以描述局部的形状信息; 位置和方向空间的量化一定程度上可以抑制平移和旋转带来的影响; 采取在局部区域归一化直方图,可以部分抵消光照变化带来的影响。 由于一定程度忽略了光照颜色对图像造成的影响,使得图像所需要的表征数据的维度降低了。 而且由于它这种分块分单元的处理方法,也使得图像局部像素点之间的关系可以很好得到的表征。 6.HOG的缺点: 描述子生成过程冗长,导致速度慢,实时性差; 很难处理遮挡问题。 由于梯度的性质,该描述子对噪点相当敏感 此文属于转载加整理,参考地址已找不到,请见谅
个人分类: HOG|3336 次阅读|0 个评论
[转载]《摄影基础知识之 如何看懂直方图》
热度 1 rekisser 2012-8-7 17:08
[转载]《摄影基础知识之 如何看懂直方图》
《摄影基础知识之 如何看懂直方图》 来源:http://www.photofans.cn 佳友在线 作者:钟毅 2012年08月06日 http://www.photofans.cn/article/showarticle.php?threadyear=2012articleid=83470page=1 拍照,玩摄影似乎已经是现在不少朋友的生活习惯之一,不管是记录生活,找美女外拍,或是性感旅拍都是一样,而光是摄影最重要的事,有光线才有画面,但该如何可以精准的搞懂拍完的照片曝光值是否正确,照片是否太亮或是太暗,相信这也是不少人困扰的事情,尤其在光线较强烈的户外,相机上的液晶荧幕观看不易,判断曝光值更显得困难,这时候就需要藉由一些图像数值来判断照片的曝光准确度,最简单的方法就是透过相机内的直方图来做判断,但相信有不少喜欢拍照的朋友,或许连直方图是什么可能都不太清楚,更别说要透过直方图判断曝光,今天笔者就简单的与大家分享,到底相机内的直方图该如何观看,并透过观看判断曝光值是否正确。 在直方图的信息中, X 轴为亮部,中间调与暗部, Y 轴表示各调性中存在的信息数值,如下图所示,直方图最左边就是暗部,最右边为亮部,中间就为中间调,而在调性中可以看见影像各色在调性中的信息。 一般常见的直方图状况有三种,下图就是曝光正常,在暗部,中间调,亮部都可以看到信息非常平均的分布。 另一个状况如下图,这就表示信息全部集中在暗部,亮部几乎没有任何信息,这个图例就表示照片曝光不足(Under Exposed)的意思。 三种常见状况的最后一种,信息集中在亮部,暗部与中间调资讯偏少,这就表示照片曝光过度(Over Exposed)。 接着我们直接用照片来实际看看直方图的显示状况。 可以看到这张照片曝光过度,几乎呈现全白的状况。 直方图的显示就会呈现这个样子,如同上方解释过的,信息全都集中在亮部,暗部几乎已经没有任何信息。 而另一个状况就是这样,照片过暗,曝光不足导致成像黑漆漆的一片。 而这张照片直方图的显示状况就像这样,信息几乎都集中在暗部。 当你拍完照片之后,检视直方图发觉有曝光不足或是曝光过度的状况,这时就需要加减 EV 值或是更改快门光圈或是感光度的设置,所以当你学会看这个简单的直方图,会让拍摄时更得心应手,也可以在液晶荧幕观看不易时可以更准确的判断照片曝光正不正确,不过相信一定也有朋友会说,现在后制软件这么方便,曝光不足或是曝光过度都可以透过软件救啊,干嘛这么麻烦还要学习怎么看直方图,其实这样说也是没错,在数字化后的摄影,确实可以透过软件来修图,但毕竟软件不是万能,手中有的摄影器材也不一定都像专业机种有这么大的动态范围宽容度,拍照的当下是稍纵即逝,如果今天拍完照片回家之后才发现软件救不回来,那不是很可惜吗?所以,喜欢拍照的朋友,笔者还是建议可以学着看直方图,这会让你拍摄更加准确,也减少不少后制的麻烦。 摄影,其实是一件非常自由的艺术创作,所以笔者也要跟各位朋友说,拍照并不一定要完全曝光准确,曝光不足与曝光过度都有可能成为拍摄者的想法概念,有的时候在拍摄时就故意想要照片曝光过度或是不足,这都是非常天马行空与自由的想法,端看拍摄者的创作,所以准确曝光不一定就是对的,有时不准也是一种意境的表现,但对于初学者或是有心要拍好照片的朋友,还是非常建议先搞懂什么叫曝光正确的照片,这样才能让你有稳固的基础做更多的创作。 底下也有两个案例可以给各位朋友参考,一张信息几乎集中在亮部,而另一张几乎都集中在暗部。 这张照片直方图信息都集中在亮部。 而这张照片虽然信息都集中在暗部,但却是笔者拍摄时就已经设想画面的形成所做的光圈快门组合,说上述两张曝光不准也是没错,但这两张照片却符合笔者创作画面的概念,这就是摄影,自由,没有框架。 直方图的数值信息确实可以帮助拍摄者更快地判断照片的曝光状况,但直方图并没有绝对的对或错,如同上面所说,摄影是自由的,是艺术创作,端看拍摄者想创造出什么画面,那照片的成果就是一张漂亮的曝光结果,不过这也并不表示直方图不重要,这对摄影来说是基本功,当你可以准确判断曝光状况,你才有办法创造出更多不同的影像艺术,尤其对于入门或是只喜欢随手拍摄的朋友,拍出曝光正常的照片才是最重要的事,不是吗?
个人分类: 摄影学习|4863 次阅读|1 个评论
颜色相关直方图——原理,模型与方法
热度 3 CanXiang 2012-5-30 15:33
颜色相关直方图——原理,模型与方法
1.Introduction 颜色相关直方图(color correlogram),结合了图像中的颜色与空间信息,用颜色之间(不同颜色或相同颜色)的量化距离来构建直方图。而传统的颜色直方图只考虑了颜色信息。如下示例: 左侧的图像与右侧的图像具有相同的颜色直方图信息;如果不考虑颜色之间的空间位置关系信息,很难区分两个图。 2.Modeling 假设图像的记号为I(x,y),x、y为空间坐标;包含的颜色有C1,C2,C3...Cn.设置两种颜色之间的距离为d.那我们将生成这样的一个直方图:它的bin的个数为n的平方(颜色的组合数目),对于其中的每个Bin,Bin的大小为 Bin(Ci,Cj) = Σx,y{||I(x,y,Ci)-I(x,y,Cj)|| = d}。其中,||*||表示像素值为Ci,Cj的两个像素的空间距离,然后统计这样的像素个数。所以,要是设置不同的距离d1,d2,d3...dm(共D个).那个Bin的维数为(n*n*D)。 进一步,我们只考虑相同颜色之间空间关系,就称为颜色自相关图(color auto-correlogram)那个Bin的维数为(n*D)。 3.Experiment Color histogram rank: 310 Autocorrelogram rank: 5 这个是颜色相关图在基于内容的图像检索中的应用,比原来的rank结果提高了。 4.Code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function output = ColorCorrelogram(rgb,d) R = rgb(:,:,1); G = rgb(:,:,2); B = rgb(:,:,3); R_BITS = 2;%bit量化 G_BITS = 2; B_BITS = 2; size_color = 2^R_BITS*2^G_BITS*2^B_BITS;%归一化后的颜色种数 R1=bitshift(R,-(8-R_BITS)); G1=bitshift(G,-(8-G_BITS)); B1=bitshift(B,-(8-B_BITS)); %包含的颜色种数为:4x4x4 I=R1+G1*2^R_BITS+B1*2^R_BITS*2^B_BITS;%新生图像 temp = zeros(size_color,1); os = offset(d); s = size(os); for i = 1:s(1) offset = os(i,:); glm = GLCMATRIX(I,offset,size_color); temp = temp+glm; end hc = zeros(size_color,1); for j = 0:size_color-1 hc(j+1) = numel(I(I == j));%Index为j的计数 end output = temp./(hc+eps); output = output/(8*d); end function os = offset(d) = meshgrid(-d:d,-d:d); r = r(:); c = c(:); os = ; bad = max(abs(r),abs(c)) ~= d; os(bad,:) = = meshgrid(1:s(1),1:s(2));%网格化,很明显 r = r(:);%向量化 c = c(:);%向量化 r2 = r+offset(1);%加偏置 c2 = c+offset(2);%加偏置 bad = c21|c2s(2)|r21|r2s(1);%筛选出index不在图像内的点 Index = ;%原始距离与相对距离的矩阵 Index(bad,:) = ; bad = v1~=v2;%这里计算的是颜色自相关图 Ind(bad,:) = ); end out = ; end out = out(:); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Reference http://www.cs.cornell.edu/rdz/Papers/ecdl2/spatial.htm
12407 次阅读|5 个评论
[转载]数据的优先采样与去聚
oliven 2012-3-22 15:44
通常,数据的空间位置不是随机或规则间隔的。由于各种原因,数据可能已被优先采样,某些位置的采样点密度可能要比其他位置高。要准确反映总体直方图,正确实现采样的 正态得分变换 和直方图(还有累积分布)十分重要。如果数据进行空间自相关时被优先采样,则通过样本得到的直方图可能不会反映总体直方图。 在去聚示例的左上图中,沿线的 100 个位置处的总体值以实心圆的形式指定。这些值是通过具有常数均值和较强正自相关性的空间自相关过程模拟得到的。样本数据是从第一个点开始每隔一个点选取的点,以圆圈显示。在去聚示例的右侧,总体直方图以蓝色表示,采样直方图以紫色表示。 由于样本是总体的一半,您可能希望样本直方图条块高度约是总体直方图条块的一半,且有一些变化。在左下方,数据被优先采样,从开始到位置 34 每五个位置出现采样,之后到位置 70 每个位置处都出现采样,然后又是每五个位置处出现采样直到最后。最终结果也是对总体的一半进行采样。优先采样较集中出现在空间位置的中间,使得中间数据值在样本中占据的比例较大,因此范围从 -3 到 1 之间的值的直方图条块几乎与总体条块相等。与此同时,较低和较高的值未在样本直方图中充分体现出来。 避免优先采样的一种解决方案是对数据进行加权,其中密集采样区域内的数据将获得较小的权重(将缩小上述优先采样示例中介于 -3 和 1 之间的值的样本直方图条块),而稀疏采样区域内的数据将获得较大的权重(将扩大较低和较高数据值处的样本直方图条块)。Geostatistical Analyst 提供了两种方法。默认方法是单元去聚。在单元去聚中,矩形单元排列在格网的数据位置上,附加到每个数据位置的权重与其单元中的数据点数成反比。 剩下的就是选择格网大小和方向。Geostatistical Analyst 提供了一个图形,显示各种单元大小的所有数据中的加权平均值。如果数据已在高值区域中优先采样,建议选择与最小加权平均值对应的单元大小,反之,如果数据已在低值区域中优先采样,则选择与最大加权平均值对应的单元大小。 另一种方案是使用面方法,此方法在每个空间数据位置周围定义一个面,使得面内的所有位置到该数据位置的距离小于到其他任何数据位置的距离,如下图所示。 数据位置以小点显示,面围绕这些小点进行绘制,并用彩色晕渲指示这些面的大小。这种方法的理念是使每个数据位置的权重与数据所“表示”的区域大小成比例。这种方法的问题是定义边权重很困难。除非边框将数据包围,否则边点通常会获得较大的权重。在 Geostatistical Analyst 中,边框是一个矩形,通常需对边缘位置指定特别大的权重。
0 个评论
[转载]局部特征算子简述 (转)
hailuo0112 2012-2-4 20:20
1.局部算子分类: 来自网络“天若有情” http://www.china-vision.net/blog/user1/218/1471.html http://www.china-vision.net/blog/user1/218/1472.html 1)基于分布的算子:使用直方图表现不同的外观或形状特 2)空间频率技术:傅立叶变换和盖伯变换 3)微分算子: 2.局部特征建立依赖的空间 1)归一化的Laplacian尺度空间 2) Difference of Gaussian 3. 局部区域检测算法 1)Harris points 旋转不变量 特征点周围41×41像素区域 大小固定 2)Harris-Laplace regions 旋转和尺度不变量 检测角点结构特征 3)Hessian- Laplace regions 旋转和尺度不变量 特征点是由Hessian 决定的空间极大值和Laplacian-of-Gaussian.尺度空间极大值,与DoG检测近似,但是在尺度空间能获得更高的准确度,并且在尺度选择 上的准确度也高于Harris-Laplace 。检测的准确性影响算子的执行力。 4)Harris-Affine regions 仿射不变量 由Harris-Laplace 检测子检测位置和尺度,附近的仿射由基于二次动差矩阵的affine adaptation 程序决定 5)Hessian-Affine regions 仿射不变量 由Hessian-Laplace 检测子检测位置和尺度,附近的仿射由affine adaptation 程序决定 4. 局部区域描述子 1) SIFT描述子 是一个3D梯度位置方向直方图,位置被量化到4×4局部栅格,梯度角度分为8个方向,算子为4×4×8=128维 2)Gradient location-orientation histogram (GLOH),GLOH是SIFT描述子的一种延伸,为了增强其鲁棒性和独立性。以对数极坐标在半径方向建立三个带(6,11,15)和8个角度方向,形 成17个位置带,中心带在半径方向不分块。梯度方向量化为16个带,形成272维矢量,利用PCA降维 3)Shape context 与SIFT描述子相似,但是基于边缘 Shape context是一个边缘点位置和方向的3D直方图,以对数极坐标在半径方向建立三个带(6,11,15)和4个角度方向,生成36维描述子 4)Geometric histogram 在一个区域内描述边缘分布直方图 5)PCA-SIFT 描述子 以特征点周围39×39像素块形成3024维矢量,用PCA降维36维 6)Spin image 是一个量化像素位置和强度的直方图 ,在5个圆环中计算10个强度带,生成50维算子 7)Steerable filters and differential invariants 使用与高斯卷积后的导数 8)Complex filters 9) Moment invariants 10) Cross correlation 6.匹配方法: 基于阈值的匹配 基于最近邻匹配:如果DB是DA的最近邻区域,且之间的距离小于阈值则区域A与区域B是匹配的 基于次最近距离与最近距离之比: 7. 描述子维数影响 低维算子:steerable filters, complex filters, differential invariants 基 于微分的算子,导数的阶数影响着算子的维数,对于steerable filters 三阶导数和四阶导数都能保持算子的独立性,并且导数的阶数对算子匹配的准确度影响显而易见,但是对complex filters 和differential invariants影响较小。并且steerable filters 计算到四阶导数时效果比differential invariants 效果好。 高维算子:GLOH,PCA-SIFT,cross correlation 算子 维数过高与过低效果都不理想。对于GLOH算子,128维匹配效果高于40维和272维,对于PCA-SIFT36维效果好于20维和100维,对于 cross correlation则81维匹配效果好于36维和400维。 8.对不同图像变换的适应性 1)仿射变换。 利用Hessian Affine 和Harris Affine 检测特征点,然后对不同的局部算子测试。效果最好的是SIFT算子。并且利用Hessian Affine 比Harris Affine的效果好,因为基于拉普拉斯的尺度选择与Hessian 算子相结合可以获得更准确的结果。 2)尺度变换 大多算子表现良好 3)旋转变换 有三种误差影响算子的计算:区域误差,位置误差,方向估计误差 4)图像模糊 所有的算子性能都有所降低,但是GLOH和PCA-SIFT算子性能最好,基于边缘检测的算子性能下降最为明显 5)图像压缩 影响小于图像模糊,但是比尺度变换和旋转变换大 6)光照变化 对低维算子影响高于高维算子 总结: 1)GLOH性能最好,其次是SIFT 2)低维算子中性能最好的是gradient moments和steerable filters 3)cross correlation 最不稳定 4) Hessian-Laplace 和Hessian-Affine 主要检测圆斑状结构。 5)由于更高的准确性,Hessian 区域比Harris区域性能更好一些
个人分类: 特征提取|3388 次阅读|0 个评论
[转载]Matlab二维图形的绘制
linpandr 2011-12-10 16:57
常用的二维图形命令: http://hi.baidu.com/lukespring/blog/item/3fa11516da355652f2de32ea.html plot:绘制二维图形    loglog:用全对数坐标绘图 semilogx:用半对数坐标(X)绘图 semilogy:用半对数坐标(Y)绘图 fill: 绘制二维多边填充图形 polar:绘极坐标图       bar:画条形图 stem:画离散序列数据图    stairs:画阶梯图 errorbar:画误差条形图     hist:画直方图 fplot:画函数图      title:为图形加标题 xlabel:在X轴下做文本标记 ylabel:在Y轴下做文本标记 zlabel:在Z轴下做文本标记 text:文本注释    grid:对二维三维图形加格栅 绘制单根二维曲线 plot函数,基本调用格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。 例如: 在0≤x≤2?区间内,绘制曲线 y=2e-0.5xcos(4πx ) 程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*cos(4*pi*x); plot(x,y) plot函数最简单的调用格式是只包含一个输入参数: plot(x) 在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。 p= ; plot(p) 绘制多根二维曲线 1.plot函数的输入参数是矩阵形式 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 (3) 对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。 当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。 2.含多个输入参数的plot函数 调用格式为: plot(x1,y1,x2,y2,…,xn,yn) (1) 当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。 (2) 当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 例如: 分析下列程序绘制的曲线。 x1=linspace(0,2*pi,100); x2=linspace(0,3*pi,100); x3=linspace(0,4*pi,100); y1=sin(x1); y2=1+sin(x2); y3=2+sin(x3); x= '; y= '; plot(x,y,x1,y1-1) 3.具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为: plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。 例如: 用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); plotyy(x,y1,x,y2); 4.图形保持 hold on/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。 例如: 采用图形保持,在同一坐标内绘制曲线 y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); plot(x,y1) hold on y2=2*exp(-0.5*x).*cos(pi*x); plot(x,y2); hold off 设置曲线样式 MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号,它们可以组合使用。例如,“b-.”表示蓝色点划线,“y:d”表示黄色虚线并用菱形符标记数据点。当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次。 要设置曲线样式可以在plot函数中加绘图选项,其调用格式为: plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n) 例如: 在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),标记两曲线交叉点。 程序如下: x=linspace(0,2*pi,1000); y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); k=find(abs(y1-y2)1e-2); %查找y1与y2相等点(近似相等)的下标 x1=x(k); %取y1与y2相等点的x坐标 y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); %求y1与y2值相等点的y坐标 plot(x,y1,x,y2,'k:',x1,y3,'bp'); 图形标注与坐标控制 1.图形标注 有关图形标注函数的调用格式为: title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text(x,y,图形说明) legend(图例1,图例2,…) 函数中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。例如,text(0.3,0.5,‘sin({\omega}t+{\beta})’)将得到标注效果sin(ωt+β)。 例如: 在0≤x≤2?区间内,绘制曲线y1=2e-0.5x和y2=cos(4πx),并给图形添加图形标注。 程序如下: x=0:pi/100:2*pi; y1=2*exp(-0.5*x); y2=cos(4*pi*x); plot(x,y1,x,y2) title('x from 0 to 2{\pi}'); %加图形标题 xlabel('Variable X'); %加X轴说明 ylabel('Variable Y'); %加Y轴说明 text(0.8,1.5,'曲线y1=2e^{-0.5x}'); %在指定位置添加图形说明 text(2.5,1.1,'曲线y2=cos(4{\pi}x)'); legend(‘y1’,’y2’) %加图例 2.坐标控制 axis函数的调用格式为: axis( ) axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度。 axis square:产生正方形坐标系(缺省为矩形)。 axis auto:使用缺省设置。 axis off:取消坐标轴。 axis on:显示坐标轴。 例如: 给坐标加网格线用grid命令来控制。grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。 给坐标加边框用box命令来控制。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换 在同一坐标中,可以绘制3个同心圆,并加坐标控制。 程序如下: t=0:0.01:2*pi; x=exp(i*t); y= '; plot(y) grid on; %加网格线 box on; %加坐标边框 axis equal %坐标轴采用等刻度 图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p) 该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。 例如: 在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。 程序如下: x=linspace(0,2*pi,60); y=sin(x);z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1); plot(x,y);title('sin(x)');axis ( ); subplot(2,2,2); plot(x,z);title('cos(x)');axis ( ); subplot(2,2,3); plot(x,t);title('tangent(x)');axis ( ); subplot(2,2,4); plot(x,ct);title('cotangent(x)');axis ( ); 其他二维图形 其他坐标系下的二维数据曲线图 1.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…) 例 绘制y=10x2的对数坐标图并与直角线性坐标图进行比较。 程序如下: x=0:0.1:10; y=10*x.*x; subplot(2,2,1);plot(x,y);title('plot(x,y)');grid on; subplot(2,2,2);semilogx(x,y);title('semilogx(x,y)');grid on; subplot(2,2,3);semilogy(x,y);title('semilogy(x,y)');grid on; subplot(2,2,4);loglog(x,y);title('loglog(x,y)');grid on; 2.极坐标图 polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。 例4-11 绘制r=sin(t)cos(t)的极坐标图,并标记数据点。 程序如下: t=0:pi/50:2*pi; r=sin(t).*cos(t); polar(t,r,'-*'); 二维统计分析图 在MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是: bar(x,y,选项):画条形图 stairs(x,y,选项): 画阶梯图 stem(x,y,选项):画离散序列数据图 例 分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)。 程序如下: x=0:pi/10:2*pi; y=2*sin(x); subplot(2,2,1);bar(x,y,'g'); title('bar(x,y,''g'')');axis( ); subplot(2,2,2);stairs(x,y,'b'); title('stairs(x,y,''b'')');axis( ); subplot(2,2,3);stem(x,y,'k'); title('stem(x,y,''k'')');axis( ); subplot(2,2,4);fill(x,y,'y'); title('fill(x,y,''y'')');axis( ); ll(x1,y1,选项1,x2,y2,选项2,…):填充图形 MATLAB提供的统计分析绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。 例 绘制图形: (1) 某企业全年各季度的产值(单位:万元)分别为:2347,1827,2043,3025,试用饼图作统计分析。 (2) 绘制复数的相量图:7+2.9i、2-3i和-1.5-6i。 程序如下: subplot(1,2,1); pie( ); title('饼图'); legend('一季度','二季度','三季度','四季度'); subplot(1,2,2); compass( );
3266 次阅读|0 个评论
利用EXCEL制作的直方图上匹配一条正态曲线
huangyaqun62 2011-11-4 10:53
1.将原始数据按照其变化的范围划分成若干个互斥组区间,列出组中值、组上限; 2.利用EXCEL提供函数frequency统计出每一组所包含个体数; 3.利用图表向导制作直方图; 4.利用函数average,stdev计算出平均数和标准差; 5.利用函数normdist计算上述各组理论概率及理论个体数; 6. 将上述的组中值和理论个体数复制粘贴在相邻的两列上; 7.利用图表向导中散点图绘制正态分布曲线; 8.将两张图叠放,并把正态分布图的背景改成无色,正态分布曲线改为与直方图不同的颜色。 一张匹配有正态分布曲线的直方图即做成。
10915 次阅读|0 个评论
[转载]直方图均衡化
stLone19 2011-10-17 08:19
第三章 灰度直方图 目录 1. 灰度直方图 2. 直方图均衡化 3. 直方图规范化 4. 色彩直方图 作业 1.灰度直方图 灰度直方图( histogram)是灰度级的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。如下图所示,灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率,是图象的最基本的统计特征。    从概率的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数 pdf(probability density function),而概率分布函数就是直方图的累积和,即概率密度函数的积分,如下图所示: 若直接从代表每种灰度的象素数目的直方图来观察,常用如下的表示:       灰度直方图的计算是很简单的,依据定义,若图象具有 L(通常L=256,即8位灰度级)级灰度,则大小为MxN的灰度图象 f (x,y)的灰度直方图hist 可用如下计算获得: 1. 初始化 hist =0 ; k=0,…, L -1 2. 统计 hist ++ ; x , y =0,…,M -1, 0,…, N -1 3. 标准化 hist /=M*N 2.直方图均衡化  直方图均衡化是通过灰度变换将一幅图象转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。 设灰度变换 s=f(r) 为斜率有限的非减连续可微函数,它将输入图象 A(x,y)转换为输出图象B(x,y),输入图象的直方图为H A (r),输出图象的直方图为H B (s),则它们的关系可由如下过程导出:       例如,下图是直方图均衡化后的飞机图片及其直方图,可见其直方图与原图的直方图相比是很均衡的,但必须说明的是,离散情况下不可能作到绝对的一致。     3.直方图规范化 直方图规范化是指将一幅图象通过灰度变换后,使其具有特定的直方图形式,如使图象与某一标准图象具有相同的直方图,或使图象具有某一特定函数形式的直方图。 如下图所示,希望将图象 A(x,y)变换为具有特定直方图H 3 (D)的图象C(x,y)。首先利用直方图均衡化将图象A(x,y)变换为具有平坦直方图的图象B(x,y),再利用第二个灰度变换将B(x,y)变换为C(x,y):   4.色彩直方图  色彩直方图是高维直方图的特例,它统计色彩的出现频率,即色彩的概率分布信息。通常这需要一定的量化过程,将色彩分成若干互不重叠的种类。一般不直接在 RGB色彩空间中统计,而是在将亮度分离出来后,对代表色彩部分的信息进行统计,如在HSI空间的HS子空间、YUV空间的UV子空间,以及其它反映人类视觉特点的彩色空间表示中进行。例如,下图是统计肤色分布情况的例子。   (图片来源: Lv Fengjun, Ai Haizhou, et.al., Face Detection Based on Skin Color and Template Matching , ICIG'2000, Aug.16-18, 2000. ) 作业 1.编制直方图均衡化及直方图规范化程序(输入输出图象格式bmp)。 返回主目录 返回本章目录 清华大学计算机系 艾海舟 最近修改时间: 2000年1月10日
个人分类: 图像处理与计算机视觉|1 次阅读|0 个评论
人脸检测之四: 直方图.AdaBoost
热度 2 wanglin193 2011-3-28 10:15
人脸检测之四: 直方图.AdaBoost
先撇开人脸检测问题,来看看直方图。 一.用带权重的样本统计直方图 直方图Histogram,是一种常见的概率分布的非参数(区别于高斯分布,泊松分布等用参数表达概率密度的方法)表达方法。直方图可以看成概率密度分布的离散化表达方法。它的计算很简单,是一种投票的方法,就是每个样本往对应的小盒子(bin)里投一票。假设N个样本数据x量化为1~M之间的整数,那么Hist是M维数组,对应的直方图计算方法如下: //initializing for i=1:M Hist = 0; end //voting for i = 1:N Hist ] += 1 ; end 为了表示成概率分布,需要Hist数组和为1: //normalize for j = 1:M Hist = Hist /sum(Hist) ; //sum(Hist) = Hist + Hist + ... + Hist ; end 在这里sum(Hist)等于样本个数N。以上“投票+归一化”两个步骤,其实可以和成一步,即每个样本x 有一个对应的权重w =1/N,投票的时候往小盒子里放的是权重: //initializing for i=1:M Hist = 0; end //voting for i = 1:N Hist ] += w ; end 这样得到数组Hist里的每个值都是一个0-1之间的小数,表示当x取这个值(数组对应的下标)时候的概率。 二.样本权重的变化影响直方图形状 如果想改变一个概率分布取曲线的形状,比如,在训练的时候要强调x =3的样本,一种办法是增加这种样本的个数,使Hist 变大,另一种方法是增加和它对应的样本的权重w ,让某些样本产生“一个顶俩”的效果,这两种方式都能起到改变概率分布的作用。 对人脸检测这类基于图像的目标检测方法,需要搜集大量样本进行离线的训练,样本要尽可能覆盖所有可能的情况,从而使所提取特征的概率分布具有代表性,当样本数趋向于无穷大的时候,概率分布就趋向于真实的分布情况。但通常在实际中,样本数总是有限的,这时就可以 通过增加某些比较重要的样本的权重,来达到看起来是增加了某些样本数量的效果 。 另外,直方图数组Hist的某个bin中的样本权重的改变,不应该仅仅影响当前的bin,也应该对周围相邻的bin造成影响。比如,在统计一个地区人群的身高分布的时候,如果只有一个样本x=1.65m,我们可以在Hist数组中对应1.6=x1.7这一个bin里投上一票,但是1.5=x1.6和1.7=x1.8两个bin的得票为0。其实不应该这样,根据身高应该是连续分布的这一假设,从样本x=1.65m可以安全地推断出世上也应该有身高1.59和1.71的人,这样左右两个相邻的bin的值就不应为0,应该也受到x=1.65m这个样本的影响,这种影响可以假设是服从高斯分布,即越远的bin受影响越小。这其实是另一种常见的概率密度估计的非参数方法,kernel density estimation(KDE)。我们的人脸检测应用由于样本足够多,所以没有考虑这一方法。也就是说,每个特征值在投票的时候,只对一个bin起作用,不影响相邻的那两个。 三.根据当前分类结果改变样本的权重并选择“好”的特征 对于人脸检测问题,我们希望两类(faces and nonfaces)模式特征的分布离得比较远,或者看起来分得比较开。举例来说,假设我们在所有样本上提取如下3种特征,此时feature pool尺寸是3,我们要从里面选2个最好的特征: 这个图表示的是3种计算特征的方法,用矢量表示分别是 , , 。每个矢量中5个数的含义是: ;特征计算方法是白色矩形内的像素和减去黑色矩形内的像素和。其中第1个和第2个特征只在尺寸上有很小的差别,接下来的试验就是希望说明这两个特征的确是有很高的相关性的,在分类能力上是冗余的,而第3个特征和第1、2两个特征则基本上是不相关的。 我们先把这三个特征对于所有样本的概率分布(直方图的数组长度为64,也就是说特征值在所有可能的表达范围里量化为64级)画出来看看(蓝色曲线表示正样本,红色表示负样本): 可以看出所有特征的两类分布都有很大的重叠,如前所述,‘好‘的特征是指两个曲线的'差别'比较大。表达概率分布曲线之间的“距离”的度量方法有很多,参考论文中的方法是先计算两条曲线对应bin的几何平均值,然后求和(见参考文献的公式(3)),用matlab语言表达是这样:Z(h) = 2*sum(sqrt(wp.*wn)),wp和wn是表示两类直方图的数组。 可以看出这个值越小说明两类的差别越大。当曲线wp和wn完全重合的时候,z值最大,表示这个特征完全不具有分类能力;当两条曲线完全不重叠时,z值最小,表示这个特征的分类能力最强,用一个阈值就能把两堆白菜分开来。我们要从有许多特征里选出那些‘好’的特征,就是选取使z达到最小的那个。 我们现有的3个特征的z分别是1.6586,1.7384,1.7627,也就是说第1个特征最好。那么次好的特征是哪个?是第2个z=1.7384吗?答案是否定的,因为第2个特征和第1个特征太象了,因为特征采样的空间位置决定了他俩拥有很相似的概率分布,它和第1个特征都是高度相关的。接下来介绍的AdaBoost方法,就是要去掉这种相关性的影响,从而选出真正的第二个‘好特征’。具体方法是通过改变样本的权重:减小可靠的样本的权重,增大难以区分的样本的权重,利用权重改变后的样本集合进行下一轮的特征选择。 根据上一篇博客,Naive贝叶斯分类器的对数表达形式为: ln(f(f1,...fn)) = + ....+ ; 其中hp = 可以看成是特征f1的置信度曲线,它是曲线wp和wn的相同x坐标处的p值的比值的对数。也就是说,当我们计算得到一个样本的特征值,在这个曲线上查表,如果ln(p( f1 | w+ ))ln(p( f1 | w- )),表示样本更象人脸,置信度结果为正数;当ln(p( f1 | w+ ))ln(p( f1 | w- )),样本更象非人脸,置信度结果为负数;当ln(p( f1 | w+ ))=ln(p( f1 | w- ))置信度为0。 当我们选出一个特征后,可以根据每个样本的置信度hp决定如何改变它的权重,对于正样本假设它的权重为Dp ,权重改变方法为:Dp = Dp.*exp(-1*hp); 对于负样本,为Dn = Dn.*exp(1*hn)。 在我们的例子中,现在第一轮特征选择已经选出第1号特征z(1)=1.6586为最好特征,按照 得到每个样本的置信度值,改变样本权重后,上面3个特征的概率分布(直方图)变成下面的曲线了: 可以看出,特征1的两类样本曲线完全重合在一起,特征2则几乎重合在一起了,而特征3几乎没有任何变化。也就是说,特征1完全变成一个没用的特征了,而 权重的变化对特征3影响不大。这个第二轮特征选择过程,曲线间“距离”度量z重新计算后分别为 1.6586,1.6454, 1.4163,可见第二轮计算3号特征是最好的。第1个特征完全废掉了,第2个特征也几乎废了,就因为它和第1个特征太象了(高度冗余的)。 这种利用现有分类器(这里是指特征的置信度曲线)改变样本权重,再进行下一轮特征选取的训练方法,统称为AdaBoost(Adaptive Boosting)。这里的根据样本置信度改变权重的方式称为RealAdaboost。每个特征的置信度hp其实都可以看成一个分类器(比如hp大于一个阈值,则为人脸),只是这样的分类器的分类能力很低,称为弱分类器。训练过程,就是从feature pool中选取好的特征(弱分类器),组成最终的强分类器。 四.串联若干强分类器组成最终的分类器 上一篇博客提到,一个强分类器的最终形式是把若干特征的置信度相加: if ( SUM ( H(fj) ) Th ) , j = 1, .. .., n, n个特征 输出 face; else 输出 nonface; 对于人脸检测系统特征个数可能达上千个,在进行实际的人脸检测的时候,一个照片要送到分类器中进行确认的图像块个数往往数以百万记,而其中真正包含人脸的往往很少,只有几十或几百个,也就是说,非人脸的先验概率远远大于人脸。这样就希望有一种机制,可以通过计算少量特征就快速地拒绝掉那些肯定不是人脸的样本。在训练的时候,我们发现仅仅使用最好的2个特征组合的强分类器,可以在保证几乎100%检测率的情况下,拒绝掉几乎50%的负样本。这样,最终的人脸检测系统,是由若干强分类器串联而成的,象一个向一边生长的二叉树,每个强分类器只负责把样本分成“非人脸”和“有可能是人脸”两类,对于后一类样本再送入到下一个强分类器。就象很多叠在一起的筛子一样,只有通过最下面一个筛子的样本才被判断为人脸。而论文中,这种机制称为cascade。 假设每个强分类器的检测率为99%,错检率为50%(拒绝掉50%的非人脸),假设我们有10级强分类器串联,最终的分类器的检测率为0.99^10=0.9044,错检率为0.50^10=9.7656e-004。实际训练的初始化阶段,每层强分类器要给定的参数是1检测率,2错检率或3样本个数中的某两个。 两类训练样本假设为5000和1万,每层检测率为99%,错检率为50%,程序自动选取了若干特征组成两层结构的分类器。由于每层都拒绝掉50%的负样本,第3层训练开始的时候,正样本还有4900,负样本只剩下2500,太少了。这时,要做一件事,就是利用现有的分类器做为人脸检测器,在不包含人脸的图像样本中搜集负样本(其实就是这个半成品人脸检测器的错检结果),作为下一层训练的负样本。这个重新采样搜集负样本的过程称为Bootstrapping,在数据挖掘和模式识别领域是常用的一个操作步骤。试验中看到的有趣的现象是,越是处在后面的强分类器的负样本越是看起来象人脸,也需要更多的弱特征组合才能得到一个不错的强分类器。 参考文章: Bo WU, Haizhou AI, Chang HUANG, Shihong LAO, Fast Rotation Invariant Multi-View Face Detection Based on Real Adaboost, In Proc. the 6th IEEE Conf. on Automatic Face and Gesture Recognition (FG 2004), Seoul, Korea, May 17-19, 2004. http://media.cs.tsinghua.edu.cn/~imagevision/publications.htm
个人分类: 人脸检测|9800 次阅读|2 个评论
直方图均衡化的理解
热度 1 jiangqiuhua 2009-12-31 10:03
matlab中有直方图均衡化处理函数,不太理解,上网找了一下解释,都不太好理解,看了阮老师翻译的冈萨雷斯《数字图像处理》有了一些理解。 直方图均衡化的操作是图像灰度映射,s=T(r),为了保证图像的特征不变,该映射应该满足一定条件,这在许多资料中未说明。比如说单调、单值等特性。一般说了图像特征的数学描述多的是统计特征,而对视觉特征(边缘、轮廓、体态等)就非常复杂了。对图像的处理到底保持那些特征不变往往说得非常含糊,一般不容易理解和证明! 均衡化是从统计意义来说的,目的是通过映射转换,使得图像中各个像素灰度分布均匀,即F(s)=1/n。 F(s)表示灰度为s的像素频数,n表示图像像素总和。如果用概率密度函数并归一化表示就是阮老师翻译书上的Ps(s)公式。 由复合函数求导公式可推到: 因此,如果T(r)为P(r)的积分函数,则P(s)就为1了,达到了均衡化的要求,而且也满足单调的要求。 然而在matlab中仍而看出,F(s)不为1/n是为什么呢?主要是离散化实现的T(r)产生误差的原因。 理解了这个,也就很好理解直方图匹配了,注意必须满足单调的要求。 这也是许多教材的通病,对一些本质没有阐述清楚,而只是搬弄一些表面的数学公式,让人糊涂。 欢迎各位指正!
个人分类: 智能视频|12120 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-12 21:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部