直方圖
匯總通道繪制
三個(gè)通道混合繪制和把圖像轉(zhuǎn)換成灰度再繪制單通道生成的直方圖是一樣的
f1 = Mat::ones(frame.rows, frame.cols, CV_8U)*255;
//創(chuàng)建
MatND hist;
int channels[] = {0, 1, 2};
int histSize = 255;
float ranges[] = { 0, 255 };
const float* histRange = { ranges };
calcHist(&frame, 1, channels, Mat(), hist, 1, &histSize, &histRange);
normalize(hist, hist, frame.rows-10,0, NORM_INF);
//繪制
float unitDistance = f5.cols/(float)hist.rows;
for( int i = 0; i < hist.rows; i++ ){
line( f5, cv::Point( i*unitDistance, f5.rows) , cv::Point( i*unitDistance, hist.at<float>(i)), Scalar(0), unitDistance*1.5);
}
上面創(chuàng)建的是單通道直方圖钧忽,以及繪制方法,MatND是可以創(chuàng)建n維矩陣省咨,這里用的只有一維肃弟,得到的數(shù)組是 [0,rows]的一長(zhǎng)條數(shù)據(jù), 在這里還對(duì)數(shù)值進(jìn)行了標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)化中的參數(shù)在這里簡(jiǎn)單講一下笤受,將整體數(shù)據(jù)壓縮到一個(gè)范圍內(nèi)穷缤。
分別繪制三個(gè)通道
f2 = Mat::zeros(frame.rows, frame.cols, CV_8UC3);
for (int j=0; j<3; j++) {
int channels1[] = {j};
MatND hist1;
int histSize1 = 255;
float ranges1[] = { 0, 255 };
const float* histRange1 = { ranges1 };
calcHist(&frame, 1, channels1, Mat(), hist1, 1, &histSize1, &histRange1);
normalize(hist1, hist1, frame.rows-10,0, NORM_MINMAX);
float unitDistance1 = frame.cols/(float)hist1.rows;
Scalar colorRan(arc4random()%255,arc4random()%255,arc4random()%255);
for( int i = 0; i < hist1.rows-1; i++ ){
line( f2, cv::Point( i*unitDistance, hist1.at<float>(i)) , cv::Point( (i+1)*unitDistance, hist1.at<float>(i+1)), colorRan, 5);
}
}
只計(jì)算部分區(qū)域(遮罩區(qū)域直方圖)
//遮罩
Mat mask = Mat::zeros(frame.rows, frame.cols, CV_8U);
mask({int(frame.cols*.3),int(frame.rows*.1),int(frame.cols*.4),int(frame.rows*.4)}) = 255;
//放置位置
calcHist(&f3, 1, channels, mask, hist, 1, &histSize, &histRange);
//圖像的裁剪在圖像處理的位操作中有提到,記住不要在原圖上顯示箩兽,否則沒區(qū)別
bitwise_and(f3, f3, f5, mask);
直方圖均值化
equalizeHist(poolColor[0], fEq);
輸入和輸出都是單通道津肛,不能對(duì)彩色處理。汗贫。身坐。
CLAHE 保留細(xì)節(jié)的調(diào)整方式
分成小塊來(lái)處理
cvtColor(f3, f3, CV_BGR2GRAY);
Ptr<CLAHE> clahe = createCLAHE(2,{8,8});
clahe->apply(f3, f5);
類型 | 說明 | 最低值 | 最高值 |
---|---|---|---|
NORM_INF | 高值設(shè)置最高,最低值為0 | 按高值和0的比例 | 最高值 |
NORM_L1 | 每個(gè)數(shù)?總和的比例 | 低比例 | 高比例(永遠(yuǎn)不會(huì)是100%落包,除非只有一個(gè)值 |
NORM_L2 | 未知 | ||
NORM_MINMAX | 每個(gè)數(shù)占最高數(shù)的比例 | 低比例 | 1 |
直方圖反向投影
略