ฮิสโตแกรมแสดงถึงความเข้มของความลึกของภาพ ตัวอย่างเช่น พิจารณารูปภาพที่มีความลึกของสี 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); }
ผลลัพธ์