1数值实验

在MATLAB2009a的环境下,应用AkMTI-CCI算法和传统k均值算法,对图1中的RGB图像进行颜色聚类.分别取聚类数k=6和k=12,将AkMTI-CCI算法和传统的k均值算法两种算法分别运行10次.1)由算法运行时间表(表1)可见,10次实验中传统k均值算法收敛速度波动较大,而AkMTI-CCI算法收敛速度比较稳定;且传统k均值算法平均收敛速度均大于AkMTI-CCI算法平均收敛速度,其中k=6和k=12时二者的速度比值分别为2.9104421和9.0792188.事实上随着图像像素点个数和聚类数的增加,二者的收敛速度差距会更大.2)传统k均值算法初始中心选取的随机性导致每次试验所得的聚类结果都不尽相同,聚类效果不稳定,而AkMTI-CCI算法每次试验时的初始类中心相同,从而各次实验得到的颜色聚类效果相同.图2和图3分别为聚类数k=6和k=12时运用AkMTI-CCI算法得到的颜色聚类图,而图4和图5分别为聚类数k=6和k=12时运用传统k均值算法得到的一般颜色聚类图.比较聚类图可见,当聚类数k=6时,AkMTI-CCI算法得到的聚类图像在颜色上更接近原始图像,且花瓣的纹理更清晰一些;当聚类数k=12时,AkMTI-CCI算法与传统k均值算法得到的聚类图像的颜色效果上相近,但AkMTI-CCI算法在花蕊和花瓣边缘部分保留了更多地颜色细节.实验结果表明,相对于传统的k均值算法,Ak-MTI-CCI算法对图像进行颜色聚类时算法稳定、速度快,且一般情况下,AkMTI-CCI算法进行聚类时颜色效果更接近于原始图像,同时对图像的颜色分割更细致一些.

2AkMTI-CCI算法合理性分析

数值实验表明在对图像进行颜色聚类时,Ak-MTI-CCI算法在收敛速度和颜色聚类的效果等方面均优于传统的k均值算法.1)AkMTI-CCI算法颜色聚类效果的提高依赖于初始中心的选取.传统的k均值算法通过随机方式选取聚类中心,其颜色可能不能很好的体现出图像中的颜色差异,从而会影响颜色聚类的效果.而AkMTI-CCI算法中第一个初始聚类中心取作图像的所有像素点颜色均值,而其余的聚类中心按照最远优先原则选取,从理论上实现了类间距离最大的聚类原则.这样选取的初始中心离散程度较大,能够较好地体现出图像中的颜色差异,且每次试验均可得到相同的初始聚类中心,因而用AkMTI-CCI算法进行图像颜色聚类不仅可以提高颜色聚类效果,保留更多的颜色细节,而且也增加了算法的稳定性.2)AkMTI-CCI算法收敛速度的提高依赖于下述两个方面:首先,传统的k均值聚类算法中要计算n•k•e次两点之间的欧氏距离,其中n是图像中像素点的个数,k是聚类的个数,e是迭代次数.一般而言,这里e还会随着n、k以及数据的维数的增加而增加.而AkMTI-CCI算法在距离计算时通过三角不等式利用距离的上下界来控制距离的计算量,这里仅仅需要计算大约n•e次两点间的欧氏距离.可见,AkMTI-CCI算法中,距离计算量的极大减少使得算法收敛速度得到了极大的提高,且像素点个数越少,聚类数越大,收敛速度会越快.其次,传统的k均值算法的收敛条件是每个类的类内误差平方和最小,而AkMTI-CCI算法以迭代时聚类中心收敛为优化目标.因而,AkMTI-CCI算法在判定算法收敛条件时计算量更小,从而其收敛速度会更快些.

3结论

颜色聚类效果的好坏将直接影响数字油画制作的质量.用传统的k均值聚类算法对图像进行颜色聚类,不仅速度慢,而且初始中心选择的随机性会影响图像颜色聚类的效果和算法的稳定性,从而最终影响到制作数字油画的速度和质量.针对这一问题,本文给出了AkMTI-CCI算法.该算法中,由于使用三角不等式来减少距离的计算量,极大的提高了算法的速度,且由于初始中心选取的合理性使得最终的聚类效果更合理.数值实验表明,AkMTI-CCI算法能够极大地提高颜色聚类的速度,聚类后的图像颜色接近实际图像颜色,且更好地保留了图像颜色的细节.考虑到AkMTI-CCI算法进行图像颜色聚类时,仅仅利用像素点的颜色信息进行分类,没有考虑到像素点的位置信息,试想如果能够同时结合颜色和位置信息对像素点进行聚类,则聚类结果可能会更加准确.另外,近年来一些新的较好的改进的k均值聚类算法被提出,这些算法像基于三角不等式的加速k均值算法一样,即考虑到算法的稳定性又提高了算法的聚类速度.如2010年Xie和Jiang提出了一种改进的GKM算法[9],该算法改进了GKM算法中产生下一个聚类中心的方法,利用了Park和Jun提出的K-medoids聚类算法的思想[10],定义新的函数来选取下一个聚类的最佳备选中心,从而减少了GKM算法的计算量,而且避免了噪声数据对聚类结果的影响.这类算法对彩色图像的颜色聚类效果还有待进一步研究.

作者:苏清华 黄樟灿 汪金水 单位:湖北工程学院 武汉理工大学

数字油画 matlab,数字油画制作中的k均值聚算法相关推荐

  1. 聚类算法中的K均值聚类算法(K-Means clustering)

    =======================================================================               Machine Learni ...

  2. Python,OpenCV中的K均值聚类——K-Means Cluster

    Python,OpenCV中的K均值聚类 1. 效果图 2. 原理 2.1 什么是K均值聚类? 2.2 K均值聚类过程 2.3 cv2.kmeans(z, 2, None, criteria, 10, ...

  3. K均值聚类算法的MATLAB实现

    K均值聚类算法的MATLAB实现 1.K-均值聚类法的概述 之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理.最近因为 ...

  4. 【模式识别】K均值聚类算法应用实验报告及MATLAB仿真

    一. 实验目的 1.掌握K均值聚类算法的原理和实现过程: 2.掌握K均值聚类算法的应用方法. 二. 实验内容 1.彩色图像分割 选择一幅图像,分别按三种颜色数进行彩色图像分割的结果(原图和分割图).步 ...

  5. java k均值_算法——K均值聚類算法(Java實現)

    1.用途:聚類算法通常用於數據挖掘,將相似的數組進行聚簇 2.原理:網上比較多,可以百度或者google一下 3.實現:Java代碼如下 package org.algorithm; import j ...

  6. k均值聚类算法优缺点_Grasshopper实现K均值聚类算法

    本文很长很长,有很多很多图,包含以下部分: 1.算法简介 2.如何分类平面点 3.如何分类空间点 4.如何分类多维数据 5.后记 提醒:以下内容包括:智障操作,无中生友,重复造轮子 等 1.算法简介 ...

  7. 机器学习之K均值(K-Means)算法

    1.K-Means简介 K均值(K-Means)算法是无监督的聚类方法,实现起来比较简单,聚类效果也比较好,因此应用很广泛.K-Means算法针对不同应用场景,有不同方面的改进.我们从最传统的K-Me ...

  8. K-Means(K均值聚类算法)

    K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...

  9. K均值聚类算法(HCM,K-Means)

    K均值聚类核心思想如下: 算法把n个向量分为个组,并求每组的聚类中心,使得非相似性(或距离)指标的价值函数(或目标函数)达到最小.当选择欧几里德距离为组j中向量与相应聚类中心间的非相似性指标时,价值函 ...

最新文章

  1. 查看Windows服务器的CPU详细信息
  2. php7.3 安装详解,php7.3.20以及常用拓展安装
  3. Word2Vec ——gensim实战教程
  4. C++ Primer 5th笔记(9)chapter9 顺序容器 string
  5. 那些年,我们解析过的前端异常
  6. 第 8 章 crontab
  7. web 前端签名插件_10款前端开发神器,助你成前端高手?
  8. 思科6000系列交换机配置维护手册
  9. 笔试c语言实现栈,栈的实现与操作(C语言实现)
  10. 中兴f460光猫资料
  11. xshell 配置公钥 免密码登陆
  12. 2021-08-14
  13. Git amend:修改最近一次提交
  14. 优秀的第二外语学习网站:Lang-8
  15. 关于ST的一些库的说明(附标准库下载地址)
  16. Java面试题——Spring
  17. Matter理论介绍-通用-1-03:桥接器-数据结构
  18. 如何将本地图片转成图片链接
  19. cesium--画一个椭球
  20. 分子 原子 电子 质子_受质子碰撞启发的大量数据文本挖掘

热门文章

  1. 四种形态图解_中纪委”四种形态“指标体系详解
  2. HUOJ-10857 最大的面积 凸包+DP
  3. 社区保密计算机使用制度,社区保密制度
  4. fastjson 如何去掉反斜杠
  5. Autojs : 使用 html css js 作为软件的界面
  6. 全球最好的大学各专业排名
  7. 列表、下标、切片及练习
  8. 为何安装MySQL后每天会有cmd弹窗
  9. SpringMVC处理请求的流程
  10. 【Field xx in xxx.xx.xx required a bean of type ‘xx.xx.xx‘ that could not be found】排查和解决办法