打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
高斯金字塔,拉普拉斯金字塔,尺寸调整,卷积和核
 高斯金字塔( Gaussianpyramid)—用来向下采样,主要的图像金字塔
拉普拉斯金字塔( Laplacianpyramid)—用来从金字塔低层图像重建上层
未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程
度的还原,配合高斯金字塔一起使用。

这里的向下与向上采样,是针对图像的尺寸而言的(和金字塔的方向相反),
向上就是图像尺寸加倍,向下就是图像尺寸减半

1.对图像的向下取样pyrDown(src, dst, Size(src.rows/2, src.cols/2));
为了获取层级为Gi+1的金字塔图像,我们采用如下方法
(1)对图像Gi进行高斯内核卷积;
(2)将所有偶数行和列去除。

2.对图像的向上取样pyrUp(src, dst, Size(src.rows*2, src.cols*2));
如果想放大图像,则需要通过向上取样操作得到,具体做法如下。
(1)将图像在每个方向扩大为原来的两倍,新增的行和列以0填充
(2)使用先前同样的内核(乘以4)与放大后的图像卷积,获得“新增像素”
的近似值


拉普拉斯金字塔是通过源图像减去先缩小后再放大的图像的一系列图像构成的。
 
 






尺寸调整resize 
resize(src, dst, Size(1500, 1500));

核是什么?

核说白了就是一个固定大小的数值数组。该数组带有一个 锚点 ,一般位于数组中央。

Mat kern = (Mat_<char>(3,3) << 0, -1 ,0,-1, 5, -1,0, -1, 0);

如何用核实现卷积?

Mat kern = (Mat_<char>(3, 3) << 0, 1, 0, -1, 5, 1, 0, -1, 0);

filter2D(srcImage,dstImage,srcImage.depth(),kern);

假如你想得到图像的某个特定位置的卷积值,可用下列方法计算:

  1. 将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;
  2. 将核内各值与相应像素值相乘,并将乘积相加;
  3. 将所得结果放到与锚点对应的像素上;
  4. 对图像所有像素重复上述过程。

用公式表示上述过程如下:



函数原型 CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth,
                            InputArray kernel, Point anchor=Point(-1,-1),
                            double delta=0, int borderType=BORDER_DEFAULT );


其中各参数含义如下:

  1. src: 源图像
  2. dst: 目标图像
  3. ddepthdst 的深度。若为负值(如 
     ),则表示其深度与源图像相等。
  4. kernel: 用来遍历图像的核
  5. anchor: 核的锚点的相对位置,其中心点默认为 (-1, -1) 。
  6. delta: 在卷积过程中,该值会加到每个像素上。默认情况下,这个值为 
     。
  7. BORDER_DEFAULT: 这里我们保持其默认值,更多细节将在其他教程中详解


1
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
尺度空间理论
【OpenCV学习笔记】之图像金字塔(Image Pyramid)
【从零学习OpenCV 4】图像金字塔
图像融合之拉普拉斯融合(laplacian blending)
SIFT算法详解
多尺度与多分辨率的理解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服