ホームページ  >  記事  >  Java  >  Java画像のグレースケールヒストグラム

Java画像のグレースケールヒストグラム

黄舟
黄舟オリジナル
2016-12-30 11:56:012278ブラウズ

前の記事で、画像のグレースケールについて説明しました。グレースケールの後に、0 ~ 255 のピクセルの分布を理解したいと思います。これは、以下で説明する画像のグレースケール ヒストグラムであり、最も単純なものです。しかし、原則は同じです。画像のヒストグラムは画像の特定の特性を反映しており、画像検索に使用できます。

ヒストグラム情報を取得するコードは次のとおりです:

public int[] hist(){  
        toGray();  
        int[] hist = new int[256];  
        int len = h*w;  
          
        for(int i=0;i<len;i++)  
            hist[data[i]]++;  
        return hist;  
    }

次に、私たちがしなければならないことは、画像の統計的なヒストグラムを描画することです。コードは次のとおりです:

public BufferedImage getHist(){
	toGray();
	int[] intensity = hist();
	int size = 300;
	BufferedImage pic = new BufferedImage(size,size, BufferedImage.TYPE_4BYTE_ABGR);
	Graphics2D g2d = pic.createGraphics();  
        g2d.setPaint(Color.BLACK);  
        g2d.fillRect(0, 0, size, size);  
        g2d.setPaint(Color.WHITE);  
        g2d.drawLine(5, 250, 265, 250);  	
        g2d.drawLine(5, 250, 5, 5); 	 	
           
        g2d.setPaint(Color.GREEN);  
        int max = math.findMaxValue(intensity);  //找到直方图中最大的值
        float rate = 200.0f/((float)max);  
        int offset = 2;  
        for(int i=0; i<intensity.length; i++) {  
            int frequency = (int)(intensity[i] * rate);  
            g2d.drawLine(5 + offset + i, 250, 5 + offset + i, 250-frequency);  
        }  
           
        g2d.setPaint(Color.RED);  
        g2d.drawString("", 100, 270); 
        return pic;
}

上記のコードは、次のヒストグラム分析を参照しています。画像分析

実行結果は次のとおりです:

Java画像のグレースケールヒストグラム

Java画像のグレースケールヒストグラム


上記は Java 画像のグレースケール ヒストグラムの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php) を参照してください。 .cn)!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。