Halcon3:聚类及halcon实现

Halcon3:聚类及halcon实现

(1)聚类的简介:

         聚类是一种无监督学习方法,试图将数据集中的样品划分为若干个通常不相交的子集。

(2)聚类的两个基本问题:

        ①性能度量:

           用于度量聚类结果的好坏,即相同簇样本尽可能相似,不同簇样本尽可能不同。性能度星可分为两类,一,外部指标,将聚类结果与外部指标相比较,二,内部指标,直接考察聚类结果。

        ②距离计算:

           我们常用基于某种形式的"距离"的概念来定义"相似度度量" ,距离越大,相似度越小,但此"距离"未必满足距离度量的所有基本性质。

(3)原型聚类:

        ①原型聚类的简介:

          原型聚类假设聚类结构能通过一组原型刻画,采用不同的原型表示,将产生不同的算法。

        ②几种著名原型聚类:

          1) k均值聚类(k-means) 【这是我要用到的聚类方式】

                <1>k-means聚类简介:

                       k-means聚类最小化聚类所得簇划分的平均误差,平均误差越小,也就是簇内样本相似度越高。

                <2>k-means聚类的算法流程如下:

                       输入样本集对均值向量进行初始化;

                       样本集中随机选取k个样本作为初始向量;

                       对簇进行划分;

                       对均值向量进行迭代更新,知道迭代更新后均值向量不变,则将当前簇划分结果输出.

         2)学习向量量化(LVQ)

         3)高斯混合聚类

 

(4) k-means聚类的halcon实现:

        cluster model components:把用于创建模型组件的新参数用于训练结果。

        inspect clustered components:检查从训练中获得的刚性模型部件。

        class 2dim unsup:将两幅图像以聚类分割。

        class 2dim sup:利用二维空间像素分类分割图像。

        histo 2dim:计算二通道灰度图像的直方图。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要导入Halcon库: ``` loadobject('Halcon'); ``` 然后,可以使用read_image函数读取图像。这里以一张灰度图像为例: ``` read_image(Image, 'image.jpg'); ``` 接下来,将图像转换为像素坐标系,并提取像素值: ``` reduce_domain(Image, Domain); get_domain(Domain, Rows, Cols); vector_to_image(Rows, ImageRow); vector_to_image(Cols, ImageCol); get_grayval(Image, ImageRow, ImageCol, GrayValues); ``` 现在,我们可以使用kmeans函数对像素进行聚类: ``` kmeans(GrayValues, 5, 30, Clusters); ``` 其中,第一个参数是像素值,第二个参数是聚类数目,第三个参数是最大迭代次数。第四个参数返回聚类结果。 最后,将聚类结果可视化: ``` color_image(Image, RGBImage); for (Index := 0; Index < Rows * Cols; Index := Index + 1) set_rgb(RGBImage, ImageRow[Index], ImageCol[Index], Clusters[Index] * 50, Clusters[Index] * 50, Clusters[Index] * 50); disp_image(RGBImage, WindowHandle); ``` 这里使用了set_rgb函数将像素点的RGB值设置为聚类编号乘以50。 完整代码如下: ``` loadobject('Halcon'); read_image(Image, 'image.jpg'); reduce_domain(Image, Domain); get_domain(Domain, Rows, Cols); vector_to_image(Rows, ImageRow); vector_to_image(Cols, ImageCol); get_grayval(Image, ImageRow, ImageCol, GrayValues); kmeans(GrayValues, 5, 30, Clusters); color_image(Image, RGBImage); for (Index := 0; Index < Rows * Cols; Index := Index + 1) set_rgb(RGBImage, ImageRow[Index], ImageCol[Index], Clusters[Index] * 50, Clusters[Index] * 50, Clusters[Index] * 50); disp_image(RGBImage, WindowHandle); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值