图像处理之图像直方图
来源:互联网 发布:dna计算机 知乎 编辑:程序博客网 时间:2024/04/28 10:40
在C++版opencv中简化了对Hist数据结构的复杂性。
直方图计算原理
重要函数
计算直方图函数原型:
//! computes the joint dense histogram for a set of images.CV_EXPORTS 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 );
结合原理说明:images为输入图像序列;nimages输入图像数;channels一维数组,指明图像的哪些通道被计算(从0开始,为0,1,2,3,4,....的子集);
mask掩码,为空时使用Mat();hist统计数据,维数取决后面的dims;histSize指明bins的个数;ranges指明每一bins范围。
具体参考:http://www.tuicool.com/articles/b2iYzm
归一化:
#include "cv.h"#include "highgui.h"using namespace std;using namespace cv;int main(int argc,char *argv[]){Mat src,srcGray,hist;src=imread("src.jpg");cvtColor(src,srcGray,CV_BGR2GRAY);int histSize=256,channels=0;float range[]={0,255};const float *histRange={range};calcHist(&srcGray,1,&channels,Mat(),hist,1,&histSize,&histRange,true,false);int histHigh=200;Mat histImage(histHigh,histSize*5,CV_8UC1,Scalar(0,0,0));normalize(hist,hist,0,histHigh,NORM_MINMAX,-1,Mat());for (int i=0;i<histSize;i++)line(histImage,Point(i*5+1,histHigh-1),Point(i*5+1,cvRound(histHigh-1-hist.at<float>(i))),Scalar::all(255),2);imshow("histImage",histImage);waitKey(0);destroyAllWindows();return 0;}
效果:
均衡化后的结果:
0 0
- 图像处理之图像直方图
- 图像增强之直方图处理
- 图像处理之直方图计算
- 数字图像处理之图像直方图
- 图像处理 灰度图像直方图
- 图像处理之直方图均衡化
- 图像处理之(直方图)均衡化
- 图像处理之直方图比较(匹配)
- 图像处理之(直方图)反向投影
- 图像处理学习之直方图均衡
- 图像处理之直方图均衡化
- 图像处理之直方图均衡化
- 图像处理之直方图均值化
- 图像处理之直方图均衡化
- 【图像处理】直方图变换
- python 图像直方图处理
- 【图像处理】MATLAB:直方图
- opencv之图像直方图
- uiview的裁剪
- 简单计算器算法 转
- 数据结构排序之直接选择排序
- C程序的实现
- Android 自定义Progressbar,任何图片都能当成progressbar转动起来
- 图像处理之图像直方图
- MySQL安装:编译安装5.5
- 前后台系统 多任务运行 状态机实现
- Request.params、Request、Request.querystring、Request.Form 具体区别!
- Longest Substring Without Repeating Characters
- ecshop有时候模板解析不了
- ’\n’是转义字符
- LeetCode 10 Linked List Cycle II
- 仿余额宝数字渐慢跳动效果