cvCvtColor(pDst,pYubDst,CV_BGR2YCrCb);
for(int i=0;i<nWidth;i++)
{
for(int j=0;j<nHeight;j++)
{
CvScalar s=cvGet2D(pYuv,j,i);
CvScalar sDst=cvGet2D(pYubDst,j,i);
double y=s.val[0];
double yDst=sDst.val[0];
if(y-yDst>1e-6)
{
CvScalar sTemp=cvGet2D(pFrame,j,i);
cvSet2D(pDst,j,i,sTemp);
}
其中cvCreateImage用于创建新的图像空间,cvGetSize用于获取文件的尺寸,cvCvtColor用于颜色空间转换,CvScalar存储数组元素,cvGet2D返回2文数组元素。
3. 3 彩色图像滤波降噪
图像的平滑是一种实用的数字图像处理技术, 主要目的是为了减少图像的噪声。对于在测试场地采集到的膛口火焰视频图像, 由于场地等原因, 不可避免地存在许多噪声, 进行平滑处理时最重要的是要保持火焰区域轮廓的清晰, 同时能够去除高频噪声[10]。目前OpenCV可以提供五种不同的平滑操作方法,分别是简单模糊、简单五缩放变换的模糊、中值模糊、高斯模糊和双边滤波。所有的操作都由cvSmooth()函数实现,其中src和dst分别是平滑操作的输入图像和结果,cvSmooth()函数包含4个参数,这些参数的含义取决于smoothtype的值。本文在这部分采用了中值滤波对图像进行平滑操作。中值滤波器是一种非线性的滤波器, 能够很好地抑制脉冲干扰和图像噪声, 保护图像的边缘不变模糊。利用中值滤波进行平滑处理可以保留更多的关于图像的灰度信息, 使图像轮廓检测的质量得到提高。
中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是去某种结构的二文滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二文数据序列。二文中值滤波输出为 ,其中 分别为原始图像和处理后图像。W为二文模板,通常为2*2,3*3区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。中值滤波的代码如下:
cvSmooth(pDst, pDst, CV_MEDIAN, 3,0,0,0);
其中CV_MEDIAN代表滤波类型为中值滤波,如果是CV_GAUSSIAN则代表高斯滤波下文中会介绍到高斯滤波。pDst为叠加图像的名称。
3. 4 图像转换
将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值[11]。在OpenCV中图像灰度化用到的代码如下:
- 上一篇:基于LabVIEW的抽壳力测试系统设计+文献综述
- 下一篇:VHDL基于FPGA的电机测速系统设计+文献综述
-
-
-
-
-
-
-
g-C3N4光催化剂的制备和光催化性能研究
江苏省某高中学生体质现状的调查研究
高警觉工作人群的元情绪...
浅析中国古代宗法制度
上市公司股权结构对经营绩效的影响研究
中国传统元素在游戏角色...
现代简约美式风格在室内家装中的运用
C++最短路径算法研究和程序设计
NFC协议物理层的软件实现+文献综述
巴金《激流三部曲》高觉新的悲剧命运