Tag: k means

使用Java在OpenCV中使用K-means聚类像素

我目前正在尝试开发Android应用。 我试图将一张叶子的图像从RBG转换为HSV,以产生一个饱和值空间(没有色调)的图像。 接下来,我尝试使用K-means生成一个图像,它应该显示蓝色作为背景,绿色表示叶子(前景对象)。 但是,我不知道在OpenCV中使用K-means函数后如何显示图像。 Imgproc.cvtColor(rgba, mHSV, Imgproc.COLOR_RGBA2RGB,3); Imgproc.cvtColor(rgba, mHSV, Imgproc.COLOR_RGB2HSV,3); List hsv_planes = new ArrayList(3); Core.split(mHSV, hsv_planes); Mat channel = hsv_planes.get(2); channel = Mat.zeros(mHSV.rows(),mHSV.cols(),CvType.CV_8UC1); hsv_planes.set(2,channel); Core.merge(hsv_planes,mHSV); Mat clusteredHSV = new Mat(); mHSV.convertTo(mHSV, CvType.CV_32FC3); TermCriteria criteria = new TermCriteria(TermCriteria.EPS + TermCriteria.MAX_ITER,100,0.1); Core.kmeans(mHSV, 2, clusteredHSV, criteria, 10, Core.KMEANS_PP_CENTERS); 使用k-means后我该怎么做才能显示图像?

k-means聚类算法的实现

在我的程序中,我将k = 2用于k均值算法,即我只想要2个聚类。 我以一种非常简单直接的方式实现,仍然无法理解为什么我的程序进入无限循环。 任何人都可以指导我在哪里犯错误..? 为简单起见,我已经在程序代码本身中获取了输入。 这是我的代码: import java.io.*; import java.lang.*; class Kmean { public static void main(String args[]) { int N=9; int arr[]={2,4,10,12,3,20,30,11,25}; // initial data int i,m1,m2,a,b,n=0; boolean flag=true; float sum1=0,sum2=0; a=arr[0];b=arr[1]; m1=a; m2=b; int cluster1[]=new int[9],cluster2[]=new int[9]; for(i=0;i<9;i++) System.out.print(arr[i]+ "\t"); System.out.println(); do { n++; int k=0,j=0; for(i=0;i<9;i++) { if(Math.abs(arr[i]-m1)<=Math.abs(arr[i]-m2)) { cluster1[k]=arr[i]; k++; […]

在ELKI中运行聚类算法

我需要以编程方式使用ELKI运行k-medoids聚类算法。 我有一个相似矩阵,我希望输入到算法中。 是否有任何代码片段可用于运行ELKI算法? 我基本上需要知道如何创建Database和Relation对象,创建自定义距离函数,以及读取算法输出。 不幸的是,ELKI教程( http://elki.dbs.ifi.lmu.de/wiki/Tutorial )侧重于GUI版本和实现新算法,并试图通过查看Javadoc来编写代码令人沮丧。 如果有人知道任何易于使用的k-medoids库,那么这也可能是这个问题的一个很好的答案。

用Java读取wav文件

我想用Java读取wav文件,我将用K-means对它们进行分类。 我如何读取Java中的wav文件并将它们分配到一个数组或类似的东西(你可以建议它的想法)来对它们进行分类? 编辑:我想使用API​​来读取wav文件和K-means。