在
上一篇文章中,已經說過了圖像的灰度化,灰度化之後,我們希望了解像素在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中文網(m.sbmmt.com)!