前の記事で、画像のグレースケールについて説明しました。グレースケールの後に、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 画像のグレースケール ヒストグラムの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php) を参照してください。 .cn)!