原始图像灰度值按照DB = DA*DA/255进行非线性变换
效果同y>1的伽马困备变换,整体图像均变黑
DB = c * log(1+DA) 其中c为比较常数
灰度值较暗区域亮度樱尺扰增强,对数变换可以增强图像的暗部细节
应用:对夜景照片进行图像增强,增强暗部细节
又称为指数变换或幂次变换
DB = c * DA ** y 其中
y<1时,脊旦会拉伸图像中的灰度较低的区域,压缩灰度较高的部分
应用:同对数变换
y>1时,会拉伸图像中的灰度较高的区域,压缩灰度较低的部分
应用:用于相机过爆情况下图像的增强效果
对比度增强或者称为对比度拉伸就是图像增强技术的一种,它主要解决由于图像的灰度级范围较小造成的对比度较低的问题,目的就是将输出图像的灰度级放大到指定的程度,使得图像中的细节看起来更加清晰。对比 度增强有几种常用的方法,如线性变换、分段线性变换、伽马变换、直方图正规化、直方图均衡化、局部自适应直方图均衡化等。
灰度直方图是图像灰度级的函数, 用来描述每个灰度级在图像矩阵中的像素个数或者占有率(概率)。
OpenCV提供了函数 calcHist 来实现直方图的构建,但是在计算8位图的灰度直方图 时,它使用起来略显复杂。下面是OpenCV源码
可以定义函数 calcGrayHist 来计算灰度直方图,其中输入参数为8位图,将返回的灰度直方图存储为一个1行256列的 Mat 类型。
图像对比度是通过灰度级范围来度量的,而灰度级范围可通过观察灰度直方图得到,灰度级范围越大代表对比度越高;反之,对比度越低,低对比度的图像在视觉上给人的感觉是看起来不够清晰,所以通过算法调整图像的灰度值,从而调整图像的对比度是有必要的。最简单的一种对比度增强方法是通过灰度值的线性变换来实现的。
当a=1,b=0时,O为I的一个副本;如果a>1,则输出图像O的对 比度比I 有所增大;如果0<a<1,则O的对比度比I有所减小。而b值的改变,影响的是输出图像的亮度,当b>0时,亮度增加;当b<0时,亮度减小。
在OpenCV中实现一个常数与矩阵相乘有多种方式桥腔。
1、convertTo
注:当输出矩阵的数据类型是 CV_8U 时, 大于255的值会自动截断为255
2、矩阵乘法运算
使用乘法运算符“*”, 无论常数是什么数据类型, 输出矩阵的数据类型总是和输入矩阵的数据类型相同,当数据类型是 CV_8U 时,在返回值中将大于255的值自动截断为255。
3、convertScaleAbs
直方图正规化是一种自动选取a和b的值的线性变换方法。
利用 minMaxLoc 函数不仅可以计算出矩阵中的最大值和最小值, 而且可以求出最大 值的位置和最小值的位置。 当然,
在使用过程中如果只想得到最大值和最小值, 则将其 他的变量值设为 NULL 即可。
OpenCV提供的函数: normalize()
使用函数 normalize 对图像进行对比度增强时, 经常令参数码腔 norm_type=NORM_MINMAX , 和直方图正规化原理详解中提到的计算方法是相同的, 参数 alpha 相当于 Omax , 参数 beta 相当于 Omin 。 注意, 使用 normalize 可以处理多通道矩阵, 分别对每一敏模衫个通道进行正规化 *** 作。
非线性变换 。
假设输入图像为I,宽为W、 高为H,首先将其灰度值归一化到[0,1]范围,对于8位 图来说,除以255即可。 I (r, c) 代表归一化后的第r行第c列的灰度值, 输出图像记为 O, 伽马变换就是令 O(r, c) =I(r, c) γ , 0≤r<H, 0≤c<W,
当γ=1时, 图像不变。 如果图像整体或者感兴趣区域较暗, 则令0<γ<1可以 增加图像对比度; 相反, 如果图像整体或者感兴趣区域较亮, 则令γ>1可以降低图像对比度。
伽马变换在提升对比度上有比较好的效果, 但是需要手动调节γ值。
全局直方图均衡化 *** 作是对图像I进行改变, 使得输出图像O的灰度直方图 hist O 是“平”的, 即每一个灰度级的像素点个数是“相等”的。 注意,其实这里的“相等”不是严格意义上的等于, 而是约等于,
上述分别为I和O的累加直方图
总结,对于直方图均衡化的实现主要分四个步骤:
OpenCV实现的直方图均衡化函数 equalize-Hist , 其使用方法很简单, 只支持对 8位图 的处理。
虽然全局直方图均衡化方法对提高对比度很有效,但是均衡化处理以后暗区域的噪声可能会被放大,变得清晰可 见,而亮区域可能会损失信息。为了解决该问题, 提出了自适应直方图均衡化(Aptive Histogram Equalization) 方法。
自适应直方图均衡化首先将图像划分为不重叠的区域块(tiles) ,然后对每一个块分别进行直方图均衡化。 显然, 在没有噪声影响的情况下, 每一个小区域的灰度直方图会被限制在一个小的灰度级范围内; 但是如果有噪声, 每一个分割的区域块执行直方图均衡化后, 噪声会被放大。为了避免出现噪声这种情况, 提出了“限制对比度”(Contrast Limiting) [3],如果直方图的bin超过了提前预设好的“限制对比度”, 那么会被裁减, 然 后将裁剪的部分均匀分布到其他的bin, 这样就重构了直方图。
OpenCV提供的函数 createCLAHE 构建指向 CLAHE 对象的指针, 其中默认设置“限制 对比度”为40,块的大小为8×8。
热门频道首页
博客
研修院
VIP
APP
问答
下载
社区
推荐频道
活动
招聘
专题
打开CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
音视频
打开APP
视频通信系统 原创
2021-12-30 15:44:29
1点赞
lumos鱼小小
码龄2年
关注
一、作业分析
作业目的:增强特色模块、 联合各模块形成一个系统,完成完整的实验报告(可以直接包含分报告内容)。
实现思路:在前面的作业中,我实现了
①播放YUV文件
②视频处理mp4文件,对视频文件进行人脸识别
③实时采集视频文件为mp4格式
④对视频文件进行编码,解码,即将yuv文件和h264文件纳庆瞎差滑进行相互转换
⑤用rtp协议发送并接收视频文件,实现视频传输。
在本次作业中,将增强特色模块视频处理,将人脸识别和伽马变换结合起来,使视频中人脸被识别的同时改变视频的明暗对比度。并将各模块分别封装成一个函数,在主程序中逐个调用,形成一个系统。过程将在两个vs文件中完成,一个文件负责发送部分,一个文件负责接收部分。在发送部分,我将其分为主要视频采集,视频处理,视频编码,视频发送几个部分。在接收部分,我将其主要分为视频接收,视频解码,视频播放几个部分。在每一部分,将之前作业中实现的功能的单独的模块进行封装,并在此基础上增加一些模块使其可以构成一个完洞空整的系统。
实现环境:ffmpeg,SDL,opencv
二、原理
2.1.视频采集
视频采集(Video Capture)把模拟视频转换成数字视频,并按数字视频文件的格式保存下来。所谓视频采集就是将模拟摄像机、录像机、LD视盘机、电视机输出的视频信号,通过专用的模拟、数字转换设备,转换为二进制数字信息的过程。
cv::VideoWriter::VideoWriter( const String &filename,int apiPreference,int fourcc,double fps,Size frameSize,bool isColor = true )
2.2.视频处理
2.2.1伽马变换进行图像增强
基于幂次变换的Gamma校正[3]是图像处理中一种非常重要的非线性变换,通常Gamma校正长应用于拓展暗调的细节。伽马变
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)