圖像的直方圖顯示像素強度值的頻率。在圖像直方圖中,X軸顯示灰度強度,Y軸顯示這些強度的頻率。
直方圖均衡化改善圖像的對比度,以擴展圖像的強度範圍。您可以使用Imgproc類的方法equalizeHist()均衡給定圖像的直方圖。下面是這個方法的語法。
equalizeHist(src, dst)
此方法接受以下參數&負;
src−類的對象表示源(輸入)圖像。
dst−表示輸出的類對象。(均衡直方圖後得到的圖像)
Example
下面的程序演示如何均衡化給定圖像的直方圖。
import java.util.ArrayList; import java.util.List; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.Size; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; public class HistoTest { public static void main (String[] args) { // Loading the OpenCV core library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); // Reading the Image from the file and storing it in to a Matrix object String file ="E:/OpenCV/chap20/histo_input.jpg"; // Load the image Mat img = Imgcodecs.imread(file); // Creating an empty matrix Mat equ = new Mat(); img.copyTo(equ); // Applying blur Imgproc.blur(equ, equ, new Size(3, 3)); // Applying color Imgproc.cvtColor(equ, equ, Imgproc.COLOR_BGR2YCrCb); List<Mat> channels = new ArrayList<Mat>(); // Splitting the channels Core.split(equ, channels); // Equalizing the histogram of the image Imgproc.equalizeHist(channels.get(0), channels.get(0)); Core.merge(channels, equ); Imgproc.cvtColor(equ, equ, Imgproc.COLOR_YCrCb2BGR); Mat gray = new Mat(); Imgproc.cvtColor(equ, gray, Imgproc.COLOR_BGR2GRAY); Mat grayOrig = new Mat(); Imgproc.cvtColor(img, grayOrig, Imgproc.COLOR_BGR2GRAY); Imgcodecs.imwrite("E:/OpenCV/chap20/histo_output.jpg", equ); System.out.println("Image Processed"); } }
假設下面是上面程序中指定的輸入圖像histo_input.jpg。
Output
在執行程序時,您將得到以下輸出&負;
Image Processed
如果您打開指定的路徑,您可以按以下方式觀察輸出圖像−