Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จะใช้ Histogram Equalizer ใน OpenCV โดยใช้ C ++ ได้อย่างไร


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

ผลลัพธ์

จะใช้ Histogram Equalizer ใน OpenCV โดยใช้ C ++ ได้อย่างไร