OpenCV - Histogram Eşitleme
histogramBir görüntünün, piksellerin yoğunluk değerlerinin frekansını gösterir. Bir görüntü histogramında, X ekseni gri seviye yoğunluklarını ve Y ekseni bu yoğunlukların frekansını gösterir.
Histogram equalizationYoğun aralığı genişletmek için bir görüntünün kontrastını iyileştirir. Yöntemi kullanarak belirli bir görüntünün histogramını eşitleyebilirsinizequalizeHist() of Imgprocsınıf. Bu yöntemin sözdizimi aşağıdadır.
equalizeHist(src, dst)
Bu yöntem aşağıdaki parametreleri kabul eder -
src - Sınıfın bir nesnesi Mat kaynak (giriş) görüntüsünü temsil eder.
dst - Sınıfın bir nesnesi Matçıktıyı temsil eden. (Histogram eşitlendikten sonra elde edilen görüntü)
Misal
Aşağıdaki program, belirli bir görüntünün histogramının nasıl eşitleneceğini gösterir.
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");
}
}
Aşağıdakinin giriş görüntüsü olduğunu varsayalım histo_input.jpg yukarıdaki programda belirtilmiştir.
Çıktı
Programı çalıştırırken aşağıdaki çıktıyı alacaksınız -
Image Processed
Belirtilen yolu açarsanız, çıktı görüntüsünü aşağıdaki gibi gözlemleyebilirsiniz -