ฮิสโตแกรมแสดงถึงความเข้มของความลึกของภาพ ตัวอย่างเช่น พิจารณารูปภาพที่มีความลึกของสี 8 บิต หมายความว่าทุกพิกเซลสามารถมีความลึกของสีได้ตั้งแต่ 0 ถึงค่าเฉลี่ยตั้งแต่ 0 ถึง 255 หากรูปภาพเป็นภาพ RGB จะมีช่องสีแดง สีเขียว และสีน้ำเงิน ตัวอย่างเช่น ที่จุดของภาพ มีเพียงสีแดงเท่านั้น จากนั้นความลึกของสีของภาพนั้นจะอยู่ในช่องสีแดง และค่าของพิกเซลจะแตกต่างกันไปตั้งแต่ 0 ถึง 255 0 หมายถึงไม่มีสีแดง และ 255 หมายถึงการอ่านมากขึ้น
ฮิสโตแกรมแสดงผลลัพธ์ประเภทนี้สำหรับช่องทั้งหมดและทุกสี โดยการเปลี่ยนค่าของพิกเซล คุณสามารถเปลี่ยนความเข้มของพิกเซลสีบางพิกเซลได้ ตัวอย่างเช่น หากคุณต้องการเพิ่มความหนาแน่นของช่องสีแดง คุณสามารถเปลี่ยนค่าของช่องสีแดงได้
ก่อนอื่น เราจะใช้อีควอไลเซอร์ฮิสโตแกรมในภาพสีเทา รูปภาพสีเทามีเฉพาะขาวดำเท่านั้น แปลว่ามีช่องทางเดียวเท่านั้น รูปภาพเป็นรูปภาพ 8 บิต หมายถึงความลึกของสีแตกต่างกันไปตั้งแต่ 0 ถึง 255 0 หมายถึงสีขาว และ 255 หมายถึงสีดำ ในโค้ดต่อไปนี้ เราจะโหลดภาพสีและจะแปลงเป็นระดับสีเทา จากนั้นเราจะใช้ฟังก์ชัน 'equalizeHist' ของ OpenCV เพื่อทำให้ค่าพิกเซลเท่ากัน
โปรแกรมต่อไปนี้แสดงวิธีการใช้ฮิสโตแกรมอีควอไลเซอร์ใน OpenCV
ตัวอย่าง
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
Mat original;//Declaring a matrix//
original = imread("view.jpg");//loading the image
Mat gray;//declaring a matrix//
cvtColor(original, gray, COLOR_BGR2GRAY);//converting to grayscale//
Mat hist;//declaring a matrix//
equalizeHist(gray, hist);//applying histogram equalizer
namedWindow("Original");//window for actual image//
namedWindow("gray");//window for grayscale image//
namedWindow("histogram");//window for histogram//
imshow("Original", original);//showing actual image//
imshow("gray", gray);//showing grayscale image//
imshow("histogram", hist);//showing histogram effect
waitKey(0);//wait for keystroke//
return(0);
} ผลลัพธ์
