2012-04-24 5 views
0

私には問題があり、私はそれを理解できません。 私は2種類の画像処理技術、SkelethonizationThinningを使用しなければなりません。これはjavaで行う必要があります。今、問題は私がこれについて何か出発点やチュートリアルを見つけることができないということです。どこから始めたらよいか教えていただけますか?私はJavaでアプリケーションを書いていますが、可能ならばBufferedImageを使いたいと思います。Javaのスケルトン化とシンニング

おかげ

+2

あなただけのこれらのアルゴリズムおよびJavaに移植、それをいくつかのCの実装を取ることはありません理由: - 完全なソリューション

public class MyImage extends JComponent { // Note: the image should be modified on the Event Dispatch Thread private BufferedImage image = createSkelethonizationImage(); @Override public void paint(Graphics g) { g.drawImage(image, 0, 0, this); } } 

編集:ここにいくつかのコードを始めるためには何ですか? – Niki

+0

これらのアルゴリズムのいくつかを教えてもらえますか? – Arkde

+0

javaで画像を操作する方法や、これらの手法を実行するアルゴリズムを構築する方法に関するチュートリアルをお探しですか? –

答えて

5

は、次のようなのBufferedImageに描画することができます

public BufferedImage createSkelethonizationImage() { 
    BufferedImage image = new BufferedImage(width, height); 
    Graphics2D g2 = image.createGraphics(); 

    // Perform your drawing here 
    g2.drawLine(...); 

    g2.dispose(); 
    return image; 
} 

は、画像を描画するのJComponentを拡張し、paintメソッドをオーバーライドする新しいクラスを作成します。

public class Test { 

    public static void main(String[] args) { 
     // Width and height of your image 
     final int width = 200; 
     final int height = 200; 

     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
      JFrame frame = new JFrame(); 
      MyImage image = new MyImage(width, height); 
      frame.add(image); 
      frame.setSize(new Dimension(width, height)); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setVisible(true);    
      } 
     }); 
    } 
} 

class MyImage extends JComponent { 

    // Note: image should be modified on the Event Dispatch Thread only 
    private final BufferedImage image; 

    public MyImage(int width, int height) { 
     image = createSkelethonizationImage(width, height); 
     setPreferredSize(new Dimension(width, height)); 
    } 

    public BufferedImage createSkelethonizationImage(int width, int height) { 
     BufferedImage iamge = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
     Graphics2D g2 = iamge.createGraphics(); 

     // Perform your drawing here 
     g2.setColor(Color.BLACK); 
     g2.drawLine(0, 0, 200, 200); 

     g2.dispose(); 
     return iamge; 
    } 

    @Override 
    public void paint(Graphics g) { 
     g.drawImage(image, 0, 0, this); 
    } 
} 
+0

しかし、Skelethonizationエフェクトを作成するにはどうしたらいいですか?その効果を得るために何かを探しています... – Arkde

+0

ライブラリを見つけて使用するか、自分でアルゴリズムを実装する必要があります。 [AnalyzeSkeleton](http://imagejdocu.tudor.lu/doku.php?id=plugin:analysis:analyzeskeleton:start)プロジェクトのソースコードを使用することができます。 (注:Jarのダウンロードリンクは壊れていますが、ソースコードはgitサイトにあります) – Nate

+0

OK私はそれを試し、私は答えを返します:)ありがとう – Arkde

関連する問題