粒子滤波器之建立选定区域直方图(histo_bin())
2012-03-11 21:59
302 查看
/* Calculates the histogram bin into which an HSV entry falls @param h Hue @param s Saturation @param v Value @return Returns the bin index corresponding to the HSV color defined by \a h, \a s, and \a v. */ int histo_bin( float h, float s, float v ) { int hd, sd, vd; /* if S or V is less than its threshold, return a "colorless" bin */ vd = MIN( (int)(v * NV / V_MAX), NV-1 ); if( s < S_THRESH || v < V_THRESH ) return NH * NS + vd; /* otherwise determine "colorful" bin */ hd = MIN( (int)(h * NH / H_MAX), NH-1 ); sd = MIN( (int)(s * NS / S_MAX), NS-1 ); return sd * NH + hd; }
通过仔细的分析,可以得出以下结论:
假如某几个像素点的HSV值比较接近,并且H和V值大于一个给定的限定值(S_THRESH,V_THRESH),那么经过上述函数运算后会得到一个相同的值,也就是返回值。如:A(170,0.4,0.3),B(175,0.45,0.27):这两个点经过运算后都会得到44. 也就是会把44返回回去。
故对每一个像素点 : bin = histo_bin(h,s,v); hist[bin]+=1;
所以如果把A、B作为参数,那么最后得到的结果就为:A点:bin=44; hist[44+=1;] B点:bin=44; hist[44]+=1;
这样就把A点和B点作为有相同或相似属性的点统计进直方图。反映在直方图上应该就是和具有A点相似属性的点现在的值为2了。同理可以看出对于S和V,其中一个小于设定值,那么就会归为一类,也就说,如果有10的点S和V值小于设定值,那么十个点就有可能归为一类或两类。具体得就设定值而定。在此函数中,V_THRESH的设定值为0.2,所以有可能会划分为两类。
相关文章推荐
- OpenCV学习——物体跟踪的粒子滤波算法实现之计算选定区域直方图
- OpenCV 1.0 颜色直方图操作(建立,获取bin,给bin赋值)
- Halcon学习——region_to_bin(将图像的一个区域转换为二值图)
- 粒子滤波器之巴式距离测试直方图相似度
- How to Install a Bin File in Fedora
- 【原创】公司一款IC的HEX TO BIN (C#)-----2008.07
- 基于帧中继point-to-point的单区域OSPF的配置
- 几种码制转换 BCD TO HEX,HEX TO BCD ,BIN TO HEX
- Unable to launch the Java Virtual Machine Located at path: ..\..\jdk\jre\bin\client\jvm.dll
- B. Igor and his way to work
- B. Igor and his way to work
- Jmap Histo抓取后分析文件的类型简称
- Making MSBuild / Visual Studio to automatically copy all indirect dependencies to "bin" folder
- 建立Maven工程时出错,Failure to transfer com.thoughtworks.xstream:xstream:jar:1.3.1
- 智能去除选定区域
- 颜色直方图的计算、显示、处理、对比及反向投影(How to Use Histogram? Calculate, Show, Process, Compare and BackProject)
- Failed to sign bin\Debug\app.publish\setup.exe. SignTool Error: No certificates were found that met all of the given criteria.
- Vmware常见问题:Unable to connect to the MKS: Error connecting to /bin/vmx process
- Redirecting to /bin/systemctl restart sshd.service
- 如何提高Lucene建立索引的速度 How to make indexing faster