博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV2:小学篇 图像灰度变换技术-直方图处理
阅读量:5276 次
发布时间:2019-06-14

本文共 1797 字,大约阅读时间需要 5 分钟。

一.简介

在一个单通道的灰度图像中,每个像素的值介于0(黑色)~255(白色)之间,灰色图像的直方图有256个条目(或称为容器)

 

二.灰度直方图

图像由像素点构成,灰度直方图用来描述图像中各个灰度级的像素个数(该灰度级像素出现的频率),灰度直方图的横坐标表示灰度级,纵坐标表示图像中该灰度级出现的次数(频率)

对于灰度图像,其灰度阶256级变换范围为0~256

 

void calcHist(

  const Mat* images,

  int nimages,

  const int* channels,

  InputArray mask,

  OutputArray hist,

  int dims,

  const int* histSize,

  const float** ranges,

  bool uniform = true,

  bool accumulate = false)

 

 

#include 
int main(){ // 图像源获取及判断 cv::Mat Image,ImageGray; Image = cv::imread("a.jpg"); if (Image.empty()) return -1; cv::imshow("Image", Image); // 转换为灰度图像 cv::cvtColor(Image, ImageGray, CV_BGR2GRAY); // 定义直方图参数 const int channels[1] = {
0}; const int histSize[1] = {
256}; float pranges[2] = {
0, 255}; const float* ranges[1] = {pranges}; cv::MatND hist; // 计算直方图 cv::calcHist(&ImageGray, 1, channels, cv::Mat(), hist, 1, histSize, ranges); // 初始化画布参数 int hist_w = 500; int hist_h = 500; int nHistSize = 255; // 区间 int bin_w = cvRound((double)hist_w / nHistSize); cv::Mat histImage(hist_w, hist_h, CV_8UC3, cv::Scalar(0, 0, 0)); // 将直方图归一化 normalize(hist, hist, 0, histImage.rows, cv::NORM_MINMAX, -1, cv::Mat()); // 在直方图画布上画出直方图 for (int i = 1; i < nHistSize; i++) { line(histImage, cv::Point(bin_w * (i - 1),hist_h - cvRound(hist.at
(i-1)) ), cv::Point(bin_w * (i), hist_h - cvRound(hist.at
(i))), cv::Scalar(0, 0, 255), 2, 8, 0); } // 显示直方图 cv::imshow("histImage", histImage); cv::waitKey(0); return 0;}

 

 

 

三.H-S直方图

 

四.RGB直方图

 

五.自定义直方图

 

六.灰度直方图均衡

 

七.彩色直方图均衡

 

八.直方图变换查找

 

九.直方图变换累计

 

十.直方图匹配

 

十一.直方图对比

 

 

十二.直方图反向投影

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/k5bg/p/11083380.html

你可能感兴趣的文章
java.util.Arrays类详解
查看>>
NYOJ-626-intersection set(二分查找)
查看>>
项目管理之路(1):初步踏入项目管理
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
echarts饼图显示百分比
查看>>
JMS消息
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
php上传文件及头像预览
查看>>
大四java实习生的一些经历
查看>>
线程池的概念
查看>>
Oracle_Statspack性能诊断工具
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
2017前端面试题总结
查看>>
Http GetPost网络请求
查看>>
SWIFT国际资金清算系统
查看>>
Sping注解:注解和含义
查看>>