本文主要是介绍手撕OpenCV源代码之直方图均衡化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
直方图均衡化
之前的文章中陆续介绍了OpenCV的编译,色彩空间以及滤波器,甚至DNN的简单介绍,挖了不少坑,目前很多都还没有填上,东西很多,也很杂乱。为了方便读者学习,从本文开始,我将从OpenCV的基本的图像处理算法开始,逐步系统的介绍OpenCV的各个模块的功能。本文先从直方图均衡化开始介绍。网上关于OpenCV API使用方法的文章非常多,但是对于背后的算法原理介绍就比较少了,所以在后续的文章中将侧重于OpenCV算法原理以及OpenCV算法实现源码的介绍。
直方图均衡化是图像处理中非常基本的算法,但是却有着非常重要的作用,它是多种空间域处理技术的基础,除了可以提供图像的统计信息外,还可用于图像增强,图像压缩,图像分割等等,由于其算法软件计算简单,且有助于商业硬件实现,因此已经成为实时图像处理的流行工具。
算法原理简介
直方图均衡化是一种通过拉伸像素强度分布来增强图像对比度的方法,直方图均衡化的算法原理如名字一样,先求直方图,而后做均衡化,分为两部分。所以算法原理方面分为两小节。
直方图
关于直方图函数的推来过程在数字图像处理的教材上有着详细的推到,这里不做赘述。这里直接给出计算公式:
P r ( r k ) = n k M N , k = 0 , 1 , 2 , . . . L − 1 P_r(r_k)=\dfrac{n_k}{MN} ,k = 0, 1, 2,...L-1 Pr(rk)=MNnk
这篇关于手撕OpenCV源代码之直方图均衡化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!