2013-11-02 2 views
0

내가 얻은 데이터에 대해 kmeans 클러스터링을 적용하려고합니다. 여기에 링크를 달고 있습니다. 확인해주십시오. 이 링크에서 제공하는 알고리즘에서 KMean을 사용한 이미지 그룹화

http://arxiv.org/ftp/arxiv/papers/0910/0910.1849.pdf

, 나는 블록 자르기 알고리즘의 3.2 즉의 4 점까지 했어요. 나는 앞으로 나아갈 방법을 모른다. 제발 도와주세요. 내가 구현 한 곳까지 코드가 아래에 나와 있습니다. 자바에 있습니다.

import java.awt.image.*; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import java.util.ArrayList; 


public class BlockTruncation{ 

    public static void main(String[] args) throws IOException 
    { 
     BufferedImage bufImgs = ImageIO.read(new File("C://Users/Chandni/chandni's   pics/2013-04-06-1449.jpg")); 




     ArrayList<Integer> RH=new ArrayList<Integer>(); 
     ArrayList<Integer> RL=new ArrayList<Integer>(); 
     ArrayList<Integer> GH=new ArrayList<Integer>(); 
     ArrayList<Integer> GL=new ArrayList<Integer>(); 
     ArrayList<Integer> BH=new ArrayList<Integer>(); 
     ArrayList<Integer> BL=new ArrayList<Integer>(); 
     /* ArrayList RL[]=new int[15]; 
     int GH[]=new int[15]; 
     int GL[]=new int[15]; 
     int BH[]=new int[15]; 
     int BL[]=new int[15];*/ 

     int red[]=new int[(bufImgs.getWidth()* bufImgs.getHeight())]; 
     int green[]=new int[(bufImgs.getWidth()* bufImgs.getHeight())]; 
     int blue[]=new int[(bufImgs.getWidth()* bufImgs.getHeight())]; 
     int c=0; 

      for(int r=0;r<bufImgs.getWidth();r++) 
      { 
       for(int s=0;s<bufImgs.getHeight();s++) 
       { 
        int color = bufImgs.getRGB(r, s); 

        red[c]=(color>>16) & 0xFF; 
        green[c]=(color>>8) & 0xFF; 
        blue[c]=color & 0xFF; 

        c++; 

       } 
      } 
      double mean_pix[]=new double[3]; 
      mean_pix[0]=mean_no(red); 
      mean_pix[1]=mean_no(green); 
      mean_pix[2]=mean_no(blue); 

      for(int k=0;k<mean_pix.length;k++) 
      { 
       System.out.println(mean_pix[k]); 
      } 

      for(int p=0;p<red.length;p++) 
      { 
       if(red[p]<mean_pix[0]) 
       { 
        /*for(int q=0;q<RL.length;q++) 
        { 
         RL[q]=red[p]; 
        }*/ 
        RL.add(red[p]); 
       } 
       else 
       { 
        /* for(int q=0;q<RL.length;q++) 
        { 
         RH[q]=red[p]; 
        }*/ 
        RH.add(red[p]); 
       } 
      } 
      System.out.println("RH :"); 
      { 
       for(int g:RH) 
       { 
        System.out.println(g); 
       } 
      } 

      System.out.println("RL :"); 
      { 
       for(int g:RL) 
       { 
        System.out.println(g); 
        } 
       } 
      } 


    static double mean_no(int[] col) 
    { 
     double sum=0; 
     for(int rgb:col) 
     { 

      sum+=rgb; 

     } 

     return (sum/col.length); 
    } 

} 
+0

포인트 수 3.2.5는 실제로 3.3에서 설명 된 단계를 나타냅니다. K-Means *는 클러스터링 알고리즘입니다. 나는이 주제에 대해 읽으려면 시간이 필요하다고 생각합니다. – Matt

답변

0

더 많은 자료를 읽어야합니다. 에 특히이 문학을 읽지 않고

클러스터링

  • K-수단

    • 컬러 순간, 당신은 당신이 링크 된 문서를 이해 할 수 없습니다.