java+opencv實現圖像灰度化


灰度圖像上每個像素的顏色值又稱為灰度,指黑白圖像中點的顏色深度,范圍一般從0到255,白色為255,黑色為0。所謂灰度值是指色彩的濃淡程度,灰度直方圖是指一幅數字圖像中,對應每一個灰度值統計出具有該灰度值的象素數。

  灰度就是沒有色彩,RGB色彩分量全部相等。如果是一個二值灰度圖象,它的象素值只能為0或1,我們說它的灰度級為2。用個例子來說明吧:一個256級灰度的圖象,如果RGB三個量相同時,如:RGB(100,100,100)就代表灰度為100,RGB(50,50,50)代表灰度為50。

  現在大部分的彩色圖像都是采用RGB顏色模式,處理圖像的時候,要分別對RGB三種分量進行處理,實際上RGB並不能反映圖像的形態特征,只是從光學的原理上進行顏色的調配。

  圖像灰度化處理可以作為圖像處理的預處理步驟,為之后的圖像分割、圖像識別和圖像分析等上層操作做准備。


  圖像灰度化處理有以下幾種方式:

  1. 分量法

  將彩色圖像中的三分量的亮度作為三個灰度圖像的灰度值,可根據應用需要選取一種灰度圖像。

                  

  2. 最大值法

  將彩色圖像中的三分量亮度的最大值作為灰度圖的灰度值。

  

  3. 平均值法

  將彩色圖像中的三分量亮度求平均得到一個灰度值。

  

  4. 加權平均法

  根據重要性及其它指標,將三個分量以不同的權值進行加權平均。由於人眼對綠色的敏感最高,對藍色敏感最低,因此,按下式對RGB三分量進行加權平均能得到較合理的灰度圖像。

  

代碼實現:

package part; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; public class Grayscale { public static void main(String[] args) { transform(); } private static void transform(){ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat srcImage = Imgcodecs.imread("./data/yasuo.png"); Mat dstImage = new Mat(); Imgproc.cvtColor(srcImage, dstImage, Imgproc.COLOR_BGR2GRAY,0); Imgcodecs.imwrite("./data/yasuo2.png", dstImage); } } 

 

效果:

原圖

處理后


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM