您当前位置:网站首页 >> 知识专区
计算机视觉系列教程2-5:图像金字塔送她一朵玫瑰(附代码)
文章来源:CSDN FrigidWinter  上传时间:2022-3-4  浏览量:813


本文链接:https://blog.csdn.net/FRIGIDWINTER/article/details/123139599




在这里插入图片描述




1 金字塔

平时你听到、见到的金字塔是什么样的?

这样?

在这里插入图片描述

还是这样?

在这里插入图片描述

实际上除了这些,还有图像金字塔

图像金字塔有什么用?为什么要称作图像金字塔?本文带你研究这些问题。

2 什么是图像金字塔

正如生物视觉系统会处理分层次的尺寸一样,计算机视觉系统实现多分辨率图像处理的基础是图像金字塔

考虑这样一个场景:输入系统一幅图像来检测人脸。由于事先并不知道人脸在这张图片中可能的尺寸,所以需要根据输入生成一个不同大小图像组成的金字塔(应用时常用向量存储),扫描不同层次来检测可能的人脸。

此外,图像金字塔在保持细节的条件下进行图像融合等多尺度编辑操作非常有用。

图像金字塔分为两种:

  • 高斯金字塔
    高斯金字塔是最基本的图像金字塔,用于获得原图像尺度连续的的降采样序列。高斯金字塔共分 O O O组(Octave),每组分为 S S S层(Layer)。组内各层图像分辨率相同但尺度逐层递增;组间图像按隔点降采样取得。
    在这里插入图片描述
  • 拉普拉斯金字塔
    拉普拉斯金字塔通过高斯差分得到残差图像序列,用于图像重建、图像融合、特征点检测等。具体做法如图所示:构造高斯金字塔,每组图像内相邻两层相减得到残差图像序列,从而得到拉普拉斯金字塔。所以高斯金字塔每组有 s + 3 s+3 s+3层,而拉普拉斯金字塔每组只有 s s s层。
    在这里插入图片描述

3 图像金字塔有什么用?

前面已经提到,图像金字塔的作用主要有:

  • 图像重建
  • 图像多尺度特征检测
  • 图像修复
  • 图像融合

下面给出一个基于图像金字塔的图像融合算法。

  1. 选择待融合图像A与B,以及融合掩码M,并重采样使之具有相同大小;
  2. 分别取得A、B的拉普拉斯金字塔,以及M的高斯金字塔;
  3. 使用M的高斯金字塔作为加权,对A、B的每层特征进行融合,得到融合金字塔;
    在这里插入图片描述
  4. 融合金字塔仍为拉普拉斯金字塔,对其图像重建得到融合图像。

上面的图可能有点抽象,看看下面的例子。

在这里插入图片描述

4 OpenCV实战图像金字塔

主函数非常简单易懂

int main() { Mat img_1 = imread("1.jpg", 1); Mat img_2 = imread("2.jpg", 1);
 Mat dstImg; imgFusion(img_1, img_2, dstImg, 0.2); waitKey(0); return 0; } 


  • 1



试试效果

原图
在这里插入图片描述
在这里插入图片描述

融合效果图

在这里插入图片描述

是不是毫无违和感?其中关键的融合函数imgFusion()具体是如何实现的呢?

void imgFusion(Mat leftImg, Mat rightImg, Mat& dstImg, float threshold) { 
vector<Mat> gaussPyrLeft, gaussPyrRight, laplacePyrLeft, laplacePyrRight; 
// 声明高斯金字塔数据结构 
vector<Mat> maskGaussPyr;
 // 声明掩码的高斯金字塔 
vector<Mat> blendLapPyr; // 声明融合拉普拉斯金字塔 
Mat imgHighest; // 声明图像融合的起点图像 
Mat mask = Mat::zeros(PYRHEIGHT, PYRWIDTH, CV_32FC1); // 构造掩码,大小与金字塔原图像相同
 mask(Range::all(), Range(mask.cols * threshold, mask.cols)) = 1.0; cvtColor(mask, mask, COLOR_GRAY2BGR);
 // 将掩码颜色通道拓展,以适配原图像 
buildGaussPyr(mask, maskGaussPyr, 3); // 建立掩码的高斯金字塔 
resize(leftImg, leftImg, Size(PYRWIDTH, PYRHEIGHT)); 
resize(rightImg, rightImg, Size(PYRWIDTH, PYRHEIGHT)); leftImg.convertTo(leftImg, CV_32F); 
//转换成CV_32F, 用于和mask类型匹配,且CV_32F 类型精度高, 有利于计算
 rightImg.convertTo(rightImg, CV_32F); // 建立高斯金字塔与拉普拉斯金字塔 
buildGaussPyr(leftImg, gaussPyrLeft, 3); buildGaussPyr(rightImg, gaussPyrRight, 3); 
buildLaplacePyr(gaussPyrLeft, laplacePyrLeft, 3); buildLaplacePyr(gaussPyrRight, laplacePyrRight, 3); 
// 确定起点图像 
imgHighest = gaussPyrLeft.back().mul(maskGaussPyr.back()) + ((gaussPyrRight.back()).mul(Scalar(1.0, 1.0, 1.0) - maskGaussPyr.back()));
 // 融合拉普拉斯金字塔 
blendLaplacePyr(laplacePyrLeft, laplacePyrRight, maskGaussPyr, blendLapPyr); // 融合图像重建 
dstImg = imgLaplaceBlend(imgHighest, blendLapPyr); 
dstImg.convertTo(dstImg, CV_8UC3); imshow("imgProcess::seamOpt_laplace", dstImg); } 





15

2021-07

MySql知识体系总结(SQL优化篇)

MySql知识体系总结(SQL优化篇)

29

2021-06

python自制一款职位分析器,一键生成岗位分析报告

python自制一款职位分析器,一键生成岗位分析报告

02

2021-03

瑞芯微RV1126及RV1109 IPC方案优势解析

瑞芯微RV1126及RV1109 IPC方案优势解析

25

2021-01

拒绝云服务商白嫖,Elasticsearch 和 Kibana 变更开源许可协议

Elasticsearch 和 Kibana 变更开源许可协议

15

2021-01

1.6 万亿参数你怕了吗?谷歌大脑语言模型速度是 T5 速度的 7 倍

四个参数,我就能拟合出一个大象出来,用五个参数我就能让他的鼻子摆动

15

2021-07

立刻安装Windows11预览版抢先体验(虚拟机 | 含详细安装步骤)

立刻安装Windows11预览版抢先体验(虚拟机 | 含详细安装步骤)

30

2022-12

安卓APP全局黑白化实现方案

安卓APP全局黑白化实现方案

21

2021-04

稀疏推理如何加速移动设备与网页神经网络?

稀疏推理如何加速移动设备与网页神经网络?
返回顶部
客服电话
用微信扫一扫关注我们
请各公司推销人员注意:我单位拒绝任何方式、任何形式的电话推销,请勿拔打我单位客服热线进行电话推销,谢谢合作!
公司名称:100元4个小时上门服务电话
100元4个小时上门服务电话-同城约茶服务十点击查看网站【www.sscmtv.com】200元3小时上门不限次二维码-微信qq上600块3小时不限次数-一百【点击进入立即约茶】。小妹
关键词:知识专区:计算机视觉系列教程2-5:图像金字塔送她一朵玫瑰(附代码),100元4个小时上门服务电话【点击进入网站查看约茶服务】。网上怎么找上门服务,附近品茶服务,喝茶服务联系方式,附近初中生300块电话号码,不限次品茶,一条龙的服务上门二维码,100块钱上门服务电话号码,200元1小时做完付款十同城附近约茶服务:【进入平台查看预约服务】。同城包小妹电话是,小姐服务,本地同城附近200元,24小时上门二维码,1243567800元3小时上门服务电话,500块钱3小时上门服务电话,,联系同城约茶服务,【点击这里进入上门服务】。 附近大泡50元的电话
云南网站建设,云南网页设计,昆明网站建设,昆明网页设计  网站管理
【版权声明】本站部分内容由互联网用户自行发布,著作权或版权归原作者所有。如果侵犯到您的权益请发邮件致info@ynjwz.com,我们会第一时间进行删除并表示歉意。