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

ฟังก์ชัน equalizeHist () ใน OpenCV คืออะไร


ฮิสโตแกรม ของรูปภาพแสดงความถี่ของค่าความเข้มของพิกเซล ในฮิสโตแกรมของรูปภาพ แกน X จะแสดงระดับสีเทา และแกน Y แสดงความถี่ของความเข้มเหล่านี้

การปรับสมดุลฮิสโตแกรม ปรับปรุงความคมชัดของภาพเพื่อขยายช่วงความเข้มออก คุณสามารถปรับฮิสโตแกรมของรูปภาพที่กำหนดโดยใช้ equalizeHist() ฟังก์ชัน .

ไวยากรณ์พื้นฐานของฟังก์ชันนี้คือ −

ไวยากรณ์

equalizeHist(Source Matrix, Destination Matrix).

ในโปรแกรมนี้ จะปรับภาพระดับสีเทาให้เท่ากัน แปลว่ามีช่องทางเดียวเท่านั้น ฟังก์ชันนี้ปรับค่าพิกเซลของช่องสัญญาณเดียวนั้นให้เท่ากัน อย่างไรก็ตาม เมื่อเราใช้ฟังก์ชันนี้สำหรับภาพสี เราต้องกำหนดช่องสัญญาณต่างๆ แทนเมทริกซ์ต้นทางและปลายทาง ในโปรแกรมต่อไปนี้ เราจะเห็นการใช้ equalizehist() ในรูปสี

โปรแกรมต่อไปนี้แสดงให้เห็นถึง equalizeHist() ฟังก์ชันใน OpenCV

ตัวอย่าง

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main(int argc, const char** argv) {
   Mat original;//Declaring a matrix//
   original = imread("sky.jpg");//loading image//
   vectorchannels;//vector to store each channel in different array//
   Mat hist;//Declaring a matrix//
   cvtColor(original, hist, COLOR_BGR2YCrCb);//Converting from BGR to YCrCB//
   split(hist, channels);//splitting channels//
   equalizeHist(channels[2], channels[2]);//applying histogram equalizer in 2nd channel//
   Mat histeql;//Declaring a matrix//
   merge(channels, hist);//merging equalized channel with actual matrix//
   cvtColor(hist, histeql, COLOR_YCrCb2BGR);//Reconverting to BGR//
   namedWindow("original");//window to show original image//
   namedWindow("hist");//window to show edited image//
   imshow("original", original);//showing original image//
   imshow("hist", histeql);//showing edited image//
   waitKey(0);//wait for keystroke//
   return 0;
}

ผลลัพธ์

ฟังก์ชัน equalizeHist () ใน OpenCV คืออะไร