欢迎光临:
非常感谢您光临枕善居。本站是一个免费的基于VB,VB.NET源代码交流的平台,为大家提供优质的专业的源代码,如果您有需要,本站可以帮助在业余时间里给您寻找代码。当然,如果您有好的代码也可以在本站发布,共享给大家。
专业VB和.NET源码、编程开发教程、图标资源、USB电脑遥控器、智能家电控制开关....更多东东请进入我的淘宝小店--->
VB及.NET新源码2011(3DVD,控件+资源)
智能多路控制(串口编程开关) 带源码!
07-01
07
模糊聚类算法(FCM)和硬聚类算法(HCM)的VB6.0实现及其应用
作者:枕善居主 / 查看次数: 9234 / 评论: 6
程序实现:
上面的公式看似复杂,其实我们关心的就是最后的5个计算步骤,这里说明一下,有的书上以隶属度矩阵的某一范数小于一定值作为收敛的条件,这也可,不过计算量稍微要大一点了。
程序采用VB6.0编制,完全按照以上的步骤进行。
测试情况:
1、简单数据的聚类
原始数据为:
1 2
2 3
1.5 2.5
1.5 2
5.1 1
4.1 1
5 3
6 2
聚类中心为:
1.500 2.374
5.062 1.750
隶属矩阵为:
1.00 1.00 1.00 1.00 0.00 0.03 0.02 0.00
0.00 0.00 0.00 0.00 1.00 0.97 0.98 1.00
迭代次数为:2
以下是一组气候的统计数据,根据要求我们把气候分为三类:
原始数据为:
1 3.5 1 0
2 2.5 2 2
2 3.5 1 1
3 3 3 1
3 3 1 1
5 .5 5 2
6 1.5 4 0
6 1.5 4 1
5 3 2 2
4 3 1 2
聚类中心为:
4.434 2.992 1.600 1.948
5.740 1.251 4.250 0.931
1.902 3.280 1.204 0.845
隶属矩阵为:
0.09 0.26 0.02 0.40 0.26 0.12 0.08 0.02 0.92 0.88
0.04 0.08 0.00 0.16 0.04 0.82 0.89 0.97 0.04 0.03
0.87 0.67 0.98 0.44 0.70 0.06 0.04 0.01 0.03 0.09
迭代次数为:4
每个样本的类别为:
3 3 3 3 3 2 2 2 1 1
这个分析的结果是可以接受的。
2 、二维数据的聚类
随机生成二维的数据,然后比较分类结果
上图中第一排第二个式HCM的结果,其他的图是不同的参数相结合的FCM的结果,至于结果的好坏对于这些点群不好说。
上面这副图的聚类类别为4,但他显示出无论HCM还是FCM都没有给出合理的分类,产生这一现象的原因与其说是算法的问题,不如说是对距离的定义,在FCM/HCM中我们使用的是欧式距离,这使得中间那一部分到左侧的距离要近一些,因此被聚集到这个类中。通过适当改变对距离的定义,我们也可以得到合理的结果。
3 、 图像分割中的应用。
图像分割也是数据聚类的过程,我们选择图像的原始象素矩阵为聚类样本。效果如下:
第一行第二列是HCM的结果,其他是不同参数FCM的结果,其中第四副是采用加权平均反模糊化的,看到这副效果是比较差的,边缘有很多毛刺,这是因为加权平均的过程有个取整的操作所造成的。
这副图片是在工业现场拍摄的一副火焰图像,我以前做一个项目用到的,分割后的图片根据一定的原理可以得到一定温度 ,并且能大概的不同燃料和其他物份的分布状况。
在常用的二值化及其vb.net实现一文中,我曾提到用模糊聚类的方法二值化图像,应该说这种方法有其合理之处,他不同于其他的阀值分割,二带有一定模糊信息,并且能方便实现彩色二值分割(即样本的维数为3)。
如上图,程序完美的把天空绿草和树木分开。
当然FCM在其他方面也有着广泛的应用。
以上是最基本的模糊聚类算法,针对FCM的计算速度慢的特点,人们提出了快速FCM的步骤,不过那玩意我没看懂是什么意思。
前面我说过遗传算法,遗传算法在优化方面有很大的优势,而FCM算法实际上就是找到目标函数的最小值,因此可以把两者结合起来从而获得更好的效果。
最后谈一点速度优化方面的问题:
1、FCM算法的计算量是比较大的,在算法模型不变的情况下我们可以通过以下方法减小计算量. a.如果对某一个特定的问题,我们知道聚类中心的大概位置,则通过程序提供的CreateByHand方法运行。 b、在不确定聚类中心的情况下,选择聚类中心由HCM产生,HCM算法的速度是相当块的。 c.针对不同对象选择不同数据类型,这点在下面要讲到。
2、如果处理对象是图像,则数据量一般很大,速度就是关键了。考虑到图像数据是byte类型的,则可以把FCM算法的Data()参数数据类型改为byte,我们知道浮点数的运算总是很慢的。并且考虑到象素值没有小数部分,程序中有些/可以改为\,整除总比一般除法块,还有既然确定了样本的第二维,则把程序中所有的 DataSize改为3,并且对于所有的有关DataSize的小循环,全部改为手写。
3、实践证明,RndDegree(i, k)^Exponent 的计算速度比 Exp(Log(RndDegree(i, k)) * Exponent)要慢。X^2 比X*X要慢,我是指大数据量的。
回复
]mark
http://blog.csdn.net/laviewpbt/archive/2007/07/31/1720191.aspx
硬聚类(HCM)和模糊聚类(FCM)在彩色图像分割中的具体应用
http://blog.csdn.net/laviewpbt/archive/2006/11/01/1361548.aspx
模糊聚类算法(FCM)和硬聚类算法(HCM)的VB6.0实现及其应用
硬聚类(HCM)和模糊聚类(FCM)在彩色图像分割中的具体应用
http://blog.csdn.net/laviewpbt/archive/2006/11/01/1361548.aspx
模糊聚类算法(FCM)和硬聚类算法(HCM)的VB6.0实现及其应用
难道photoshop 也是用这个》?
发表评论
您没有权限发表评论!
上一篇
下一篇
相关日志:
文章来自:
Tags:
评论: 6 | 
