Im vorherigen Artikel haben wir bereits über die Graustufen des Bildes gesprochen. Nach der Graustufe hoffen wir, die Pixelverteilung zwischen 0 und 255 zu verstehen. Dies ist das Graustufenhistogramm des Bildes, über das wir weiter unten sprechen werden, welches das einfachste ist. Aber die Prinzipien sind die gleichen. Das Histogramm eines Bildes hat viele Verwendungsmöglichkeiten. Es spiegelt bestimmte Eigenschaften des Bildes wider und kann für die Bildsuche verwendet werden.
Der Code zum Erhalten der Histogramminformationen lautet wie folgt:
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; }
Dann müssen wir das statistische Histogramm des Bildes zeichnen. Der Code lautet wie folgt:
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; }
Der obige Code bezieht sich auf die Histogrammanalyse der Bildanalyse
, die laufenden Ergebnisse lauten wie folgt:
Das Obige ist der Inhalt des Java-Bild-Graustufenhistogramms. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!