Maison >Java >javaDidacticiel >histogramme en niveaux de gris d'image Java
Dans l'article précédent, nous avons déjà parlé de l'échelle de gris de l'image. Après l'échelle de gris, nous espérons comprendre la répartition des pixels entre 0-255. Il s'agit de l'histogramme en niveaux de gris de l'image dont nous allons parler ci-dessous, qui est le plus simple. Mais les principes sont les mêmes. L'histogramme d'une image a de nombreuses utilisations. Il reflète certaines caractéristiques de l'image et peut être utilisé pour la recherche d'images.
Le code pour obtenir les informations de l'histogramme est le suivant :
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; }
Ensuite, ce que nous devons faire est de dessiner l'histogramme statistique de l'image, le code est le suivant :
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; }
Le code ci-dessus En ce qui concerne l'analyse de l'histogramme de l'analyse d'image
, les résultats d'exécution sont les suivants :
Ce qui précède est le contenu de l'histogramme en niveaux de gris de l'image Java. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !