opencv 2.x学习笔记(十二)直方图均衡化
来源:互联网 发布:游戏编程书籍推荐 编辑:程序博客网 时间:2024/05/16 05:13
简介
对于前面的几篇文章的了解之后,相信大家已经对opencv的使用不再陌生了。还记得之前说过,opencv是多模块结构的嘛?我们之前所涉及的都是一些opencv的基本操作。在接下来的文章中,我们将讨论opencv中的另一个模块,imgproc模块。顾名思义,这就是opencv中的图像处理模块。即它中封装了许多关于图像处理的一些函数。今天我们所讲的直方图均衡化,就是图像处理中一个比较基础的方法。在开始之前,我们首先需要明白几个概念。
我们知道对于一个图像来说,它可以表示成为f(x, y)。而对于一个灰度图像来说,它的每一个值即为对应行(x),列(y)的强度。它的取值为(0-255)。而直方图就是图像中像素强度分布的图形表示方式。如下所示:
就像上图所表示的那样,它统计了一张图像中,每一个强度值(0-255)所对应像素的个数。
了解了直方图的含义之后,那么什么是均衡化呢?
所谓直方图均衡化,就是通过拉伸像素强度分布范围,从而增强图像对比度,获得更好地视觉效果的一种方法。如下图所示:
从上图可以看到,我们看到由第一张图的像素强度范围主要集中在中间部分,被扩展到了全部的强度范围。从而提高了图像的对比度。而这一结果正是直方图均衡化所要达到的。
至于直方图均衡化的原理,简单的可以看成是通过一个变化函数来把原来的强度值映射成为一个新的强度值,可以表示成g(x, y) = T(f(x, y)。f(x, y)为原始图像,而g(x, y)即为通过变化函数T(也成变化算子)所得到的新图像。至于变化函数T的类型在这里不再赘述。有兴趣可以参考任何一本图像处理教程。
OpenCV为我们提供了equalizeHist()函数来完成均衡化这一功能。其参数非常简单,只需传入原始图像以及要存储的输出图像。
示例:
#include <opencv2\highgui\highgui.hpp>#include <opencv2\imgproc\imgproc.hpp>#include <iostream>using namespace cv;using namespace std;int main( int argc, char ** argv ){if( argc != 2 ){cout << "输入参数个数错误!" << endl;return -1;}Mat src, dst;char * source_window = "Source image";char * equalized_window = "Equalized Image";src = imread( argv[1], CV_LOAD_IMAGE_GRAYSCALE );if( !src.data ){cout <<"图像加载失败!" << endl;}equalizeHist( src, dst );namedWindow( source_window, CV_WINDOW_NORMAL );namedWindow( equalized_window, CV_WINDOW_NORMAL );imshow( source_window, src );imshow( equalized_window, dst );waitKey(0);return 0;}
(注:我们可以在上述imread函数中,通过第二个参数,选择CV_LOAD_IMAGE_GRAYSCALE来获得一个灰度图像,也可以利用我们在第二篇文章中所讲的cvtColor()函数来得到一个灰度图像)。
运行结果:
- opencv 2.x学习笔记(十二)直方图均衡化
- Opencv学习笔记三-直方图点运算(直方图基本点算子、直方图正规化、直方图均衡化)
- opencv学习笔记-直方图和均衡化
- OpenCV学习笔记(27) 灰度直方图均衡化 练习
- opencv学习笔记9 直方图均衡化并绘制直方图
- opencv 2.x学习笔记(十三)绘制直方图
- 我的OpenCV学习笔记(13):计算直方图,利用查找表拉伸直方图,直方图均衡
- OpenCV 2 学习笔记(17): 均衡化图像直方图
- OpenCV学习笔记_直方图均衡化cvEqualizeHist
- OPENCV入门教程二十二:equalizeHist直方图均衡化
- opencv学习笔记1—equalizeHist 函数(直方图均衡化)
- OpenCV自学笔记25. 直方图均衡化
- opencv学习之直方图均衡化
- OpenCV学习之直方图均衡化
- opencv学习——直方图均衡化
- opencv直方图均衡化
- OPenCV直方图均衡化
- opencv-直方图均衡化
- Git使用之基于SSH的Git服务器的客户端配置(下篇)
- unity3D游戏开发十五之NGUI二
- HDU 3499 Flight(Dijkstra)
- unity3D游戏开发十六之NGUI三
- 泛泰A870L/K/S三版官方4.4.2原版系统卡刷包 (可自动ROOT)
- opencv 2.x学习笔记(十二)直方图均衡化
- 414 Machined Surfaces
- ZOJ 3621 Factorial Problem in Base K
- C语言查看内存调用
- 新生训练个人排位赛第二场
- nginx 常见参数以及重定向参数配置
- zoj 1058 Currency Exchange
- Android布局一_RelativeLayout
- Sap软件开发职位面试全过程