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 (m.sbmmt.com) !