opencv学习记录【1】(一些简单基本操作

7.22-7.26:图像预处理

【一】一些基本操作、函数
1)图像载入、显示、输出
imread( ), namedWindow( ),imshow( )

2)ROI区域划分&图像叠加混合
Mat imageROI
方法一
imageROI=image(Rect(500,250,logo.cols,logo.rows));
方法二
imageROI=srcImage3(Range(250,250+logoImage.rows),Range(200,200+logoImage.cols));

addWeighted函数(计算两个数组图像阵列的加权和):
void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);
其中:
dst = src1[I]*alpha+ src2[I]*beta + gamma(两数组拥有相同的尺寸和通道数);

3)分离通道&混合通道
void split(InputArray m,OutputArrayOfArrays mv);
void merge(InputArrayOfArrays mv,OutputArray dst)

4)建立Trackbar
int createTrackbar(conststring& trackbarname, conststring& winname,
int* value, int count, TrackbarCallback onChange=0,void* userdata=0)

【二】图像预处理
本周主要关注平滑处理、图像形态学的基本原理及常用函数
1)平滑处理(可用来减少图像上的噪点或者失真)
 均值滤波
输出图像的每一像素是输入图像对应像素的平均值,它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。
void blur(InputArray src, OutputArraydst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT )
 中值滤波
一种典型的非线性滤波技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节,但其花费时间是均值滤波的5倍以上。
void medianBlur(InputArray src,OutputArray dst, int ksize)
 高斯滤波
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
void GaussianBlur(InputArray src,OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, intborderType=BORDER_DEFAULT )
 双边滤波
依据每个像素及其邻域构造一加权平均值,加权平均计算包括两部分,一是与高斯平滑相同的,二也属于高斯加权,但是是基于其他像素与中心像素的亮度差值的加权。能达到保边去噪的目的。具有简单、非迭代、局部的特点。
void bilateralFilter(InputArray src, OutputArraydst, int d, double sigmaColor, double sigmaSpace, int borderType=BORDER_DEFAULT)
2)图像形态学
 膨胀、腐蚀
膨胀与腐蚀能实现消除噪声、分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素、寻找图像中的明显的极大值区域或极小值区域、求出图像的梯度。
膨胀就是求局部最大值的操作。按数学方面来说,就是将图像(或图像的一部分区域,我们称之为A)与核(我们称之为B)进行卷积。核可以是任何的形状和大小,核B与图形卷积,即计算核B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐增长。
void dilate(
InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor=Point(-1,-1),
int iterations=1,
int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue()
);
腐蚀与其相反
 开运算、闭运算
开运算(先腐蚀再膨胀)的结果是向上的孤立点被消除,可用于统计二值图像中的区域数。
闭运算与开运算相反(先膨胀再腐蚀)结果是消除低亮度的孤立点。
 梯度
膨胀图与腐蚀图之差,对二值图像进行这一操作可以将团块(blob)的边缘突出出来。我们可以用形态学梯度来保留物体的边缘轮廓。
 礼帽
礼帽是原图像与上文刚刚介绍的“开运算“的结果图之差,因为开运算带来的结果是放大了裂缝或者局部低亮度的区域,因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,且这一操作和选择的核的大小相关。

礼帽运算往往用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用礼帽运算进行背景提取。
 黑帽
黑帽是”闭运算“的结果图与原图像之差,黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,且这一操作和选择的核的大小相关。

所以,黑帽运算用来分离比邻近点暗一些的斑块。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值