이전 기사에서 이미 이미지의 회색조에 대해 이야기했습니다. 회색조 이후에는 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; }
위 코드를 이미지 분석의 히스토그램 분석
을 참고하면 실행 결과는 다음과 같습니다.
위 내용은 자바 이미지 그레이스케일 히스토그램 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!