-
主要内容
图像金字塔的概念
采样API
高斯不同(DOG) -
图像金字塔的概念
(1)我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像的放大和缩小,但是这里我们介绍图像金字塔。
一个图像金字塔是一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就像是一个古代金字塔。
(2) 本质:在图像处理中,我们需要得到输入图像不同分辨率的图片,在不同的尺度空间寻找输入图像的特征,因为我们不知道所得到的图像是怎么样的,而图像的金字塔变换是会保证图像的特征一直存在的, -
图像金字塔分为两种 :
(1)高斯金字塔——对图像进行降采样
(2)拉普拉斯金字塔——用来重建一张图片根据它的上层降采样图片 -
图像金字塔——高斯金字塔
高斯金字塔是从底向上,逐层降采样得到。降采样之后图像大小是原图像 M x N 的 M / 2 x N / 2,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。
(1)高斯金字塔的生成过程分为两步
——对当前层进行高斯模糊
——删除当前层的偶数行与列
即可得到上一层的图像,这样上一层跟下一层相比较,都只有当前层的1 / 4 大小
-
高斯不同(Difference of Gaussian -DOG)
(1)定义:就是把一张图像在不同参数下作高斯模糊之后的结果相减,得到的输出图像,称为高斯不同。
高斯不同是图像的内在特征,在灰度图像增强、角点检测中经常用到。
(2)高斯不同API
GaussianBlur(t1, g1, Size(3, 3), 0, 0);
GaussianBlur(g1, g2, Size(3, 3), 0, 0);
subtract(g1, g2, dog, Mat());
normalize(dog, dog, 255, 0, NORM_MINMAX);
此处测试原图不可以进行高斯不同,报错,转化为灰度图即可
- 采样相关API
//上采样(cv::pyrUP)-zoom in 放大
//降采样(cv::pyrDOWN)-zoom out 缩小
//生成的图像是原图在宽与高个放大两倍
pyrUP(Mat src,Mat dst,Size(src.cols*2,src.rows/2));
//生成的图像是原图在宽与高个缩小两倍
pyrDOWN(Mat src,Mat dst,Size(src.cols/2,src.rows/2));
- 图像相减
subtract(Mat t1,Mat t2,Mat result);
- 矩阵归一化
(1)归一化就是把需要处理的数据经过一定的处理(通过某种算法)限制在你所需要的一定范围内
void normalize (
InputArray src, //输入数组
OutputArray dst, //输出数组
double alpha=1, // range normalization模式的最小值
doublebeta=0, // range normalization模式的最大值,不用于norm normalization(范数归一化)模式
int norm_type=NORM_L2, //归一化类型
int dtype=-1, // dtype为负数时,输出数组的type与输入数组的type相同;
否则,输出数组与输入数组只是通道数相同,而tpye=CV_MAT_DEPTH(dtype)
InputArray mask=noArray()//操作掩膜,用于指示函数是否仅仅对指定的元素进行操作。
);
(2)归一化类型:
NORM_MINMAX:数组的数值被缩放或平移到一个指定的范围,线性归一化,比较常用
NORM_INF:此类型的定义没有查到,根据OpenCV 1的对应项,可能是归一化数组的C-范数(绝对值的最大值)
NORM_L1:归一化数组的L1 - 范数(绝对值的和)
NORM_L2:归一化数组的(欧几里德)- 范数