opencv入门四:图像金字塔,高斯差分,归一化函数,边缘填充

图像金字塔:

高斯金字塔 – 用来对图像进行降采样
拉普拉斯金字塔 – 用来重建一张图片根据它的上层降采样图片

高斯金字塔是从底向上,逐层降采样得到。
降采样之后图像大小是原图像MxN的M/2 x N/2 ,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。
高斯金子塔的生成过程分为两步:

  • 对当前层进行高斯模糊
  • 删除当前层的偶数行与列
    即可得到上一层的图像,这样上一层跟下一层相比,都只有它的1/4大小。

上采样与降采样

上采样,生成图像是原图在宽高各放大两倍
pyrUp(Mat src, Mat dst, Size(src.cols2, src.rows2));
降采样,生成图像是原图在宽高各缩小1/2
pyrDown(Mat src, Mat dst, Size(src.cols/2, src.rows/2));

高斯差分

Difference of Gaussian(DOG)是高斯函数的差分。将两幅图像在不同参数下的高斯滤波结果相减,得到DoG图。步骤:
处理一幅图像在不同高斯参数下的DoG
用两个不同的5x5高斯核对图像进行卷积,然后再相减的操作。重复三次得到三个差分图A,B,C。
根据DoG求角点
计算出的A,B,C三个DOG图中求图B中是极值的点。图B的点在当前由A,B,C共27个点组成的block中是否为极大值或者极小值。若满足此条件则认为是角点。
Mat gray, g1, g2;
cvtColor(src, gray, CV_BGR2GRAY);
GaussianBlur(gray, g1, Size(3, 3), 0, 0);
GaussianBlur(g1, g2, Size(3, 3), 0, 0);
subtract(g1, g2, dst, Mat());

归一化函数

void normalize(InputArray src,OutputArraydst, double alpha = 1, double beta = 0, intnorm_type = NORM_L2, int dtype = -1, InputArray mask = noArray() )
参数说明:
src——输入数组
dst——输出数组,支持原地运算
alpha——range normalization模式的最小值
beta ——range normalization模式的最大值,不用于norm normalization(范数归一化)模式。
normType——归一化的类型,可以有以下的取值:
NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。
NORM_INF:此类型的定义没有查到,根据OpenCV 1的对应项,可能是归一化数组的C-范数(绝对值的最大值)
NORM_L1 : 归一化数组的L1-范数(绝对值的和)
NORM_L2: 归一化数组的(欧几里德)L2-范数
dtype——dtype为负数时,输出数组的type与输入数组的type相同;否则,输出数组与输入数组只是通道数相同,而tpye=CV_MAT_DEPTH(dtype).
mask
操作掩膜,用于指示函数是否仅仅对指定的元素进行操作。

threshold(gray, dst, threshold_value, threshold_max, type_value);
在这里插入图片描述

边缘填充

在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在
四周各填充1个像素的边缘,这样就确保图像的边缘被处理,在卷积处理之
后再去掉这些边缘。openCV中默认的处理方法是: BORDER_DEFAULT,此外
常用的还有如下几种:

  • BORDER_CONSTANT – 填充边缘用指定像素值
  • BORDER_REPLICATE – 填充边缘像素用已知的边缘像素值。
  • BORDER_WRAP – 用另外一边的像素来补偿填充

给图像添加边缘API

copyMakeBorder(

  • Mat src, // 输入图像
  • Mat dst, // 添加边缘图像
  • int top, // 边缘长度,一般上下左右都取相同值,
  • int bottom,
  • int left,
  • int right,
  • int borderType // 边缘类型
  • Scalar value

参考文献:51CTO学院讲义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值