当前位置: 首页 > news >正文

图像金字塔

      图像金字塔被广泛用于各种视觉应用中。图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且是通过对原始图像连续降采样获得,直到达到某个中止条件才停止降采样。(当然,降为一个像素肯是中止条件。)

    有两种类型的图像金字塔常常出现在文献和应用中:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔低层图像中向上采样重建一个图像。

      要从金字塔第 i 层生成第i+1 层,我们先要用高斯核对第i 层进行卷积,然后删除所有偶数行和偶数列。当然,新得到的图像面积会变为源图像的四分之一。按上述过程对输入图像循环执行操作就可产生整个金字塔。OpenCV我们提供了从金字塔中上一级图像生成下一级图像的方法:cvPyrDown。同样,我们可以通过后面

相似的函数(但不是降采样的逆操作)将现有的图像在每个维度上都放大两倍:cvPyrUp。在这种情况下,图像首先在每个维度上都扩大为原来的两倍,新增的行(偶数行)以0填充。然后给指定的滤波器进行卷积(实际上是一个在每一维上都扩大为两倍的过滤器)去估计”丢失“像素的近似值。

      我们之前注意到函数cvPyrUp并不是函数cvPyrDown的逆操作。之所以这样是因为cvPyrDown是一个会丢失信息的函数。为了恢复原来(更高的分辨率)的图像,我们需要获得由降采样操作丢失的信息。

PyrDown
图像的下采样
void cvPyrDown( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 );
src
输入图像.
dst
输出图像, 宽度和高度应是输入图像的一半 ,传入前必须已经完成初始化
filter
卷积滤波器的类型,目前仅支持 CV_GAUSSIAN_5x5
函数 cvPyrDown 使用 Gaussian 金字塔分解对输入图像向下采样。首先它对输入图像用指定滤波器进行卷积,然后通过拒绝偶数的行与列来下采样图像。
[编辑]
PyrUp
图像的上采样
void cvPyrUp( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 );
src
输入图像.
dst
输出图像, 宽度和高度应是输入图像的2倍
filter
卷积滤波器的类型,目前仅支持 CV_GAUSSIAN_5x5
函数 cvPyrUp 使用Gaussian 金字塔分解对输入图像向上采样。首先通过在图像中插入 0 偶数行和偶数列,然后对得到的图像用指定的滤波器进行高斯卷积,其中滤波器乘以4做插值。所以输出图像是输入图像的 4 倍大小。(hunnish: 原理不清楚,尚待探讨)

 测试:

#include<opencv2/opencv.hpp>

using namespace cv;
int main(int argc, char ** argv)
{
    IplImage * src = cvLoadImage("F:\\BMP\\lena.bmp");
    IplImage * result1 = cvCreateImage(
        cvSize(src->width / 2, src->height / 2),
        src->depth,
        src->nChannels
        );
    cvPyrDown(src, result1, CV_GAUSSIAN_5x5);
    IplImage * result2 = cvCreateImage(
        cvSize(src->width * 2, src->height * 2),
        src->depth,
        src->nChannels
        );
    cvPyrUp(src, result2, CV_GAUSSIAN_5x5);
    cvNamedWindow("source", 1);
    cvShowImage("source", src);
    cvNamedWindow("PyrDown", 1);
    cvShowImage("PyrDown", result1);
    cvNamedWindow("PyrUp", 1);
    cvShowImage("PyrUp", result2);
    cvWaitKey(0);
    cvReleaseImage(&src);
    cvReleaseImage(&result1);
    cvReleaseImage(&result2);
    cvDestroyAllWindows();
    return 0;
}

通过。

 

参考:图像处理之高斯金字塔  java

 

相关文章:

  • 如何学习linux的建议
  • Scrapy ImagePipeline(图片下载组件)
  • Spring boot ---- java.lang.NoClassDefFoundError: javax/servlet/ServletContext
  • Java读取表格数据
  • 将js对象转为json对象属性加上引号
  • 【Augmented Reality】增强现实中的光学透射式头盔显示器的标定进阶
  • 词向量的运用-用词向量理解词组的含义
  • laravel 5.3 ——路由(资源,别名)
  • SimpleDateFormat的线程安全问题
  • 函数递归
  • 【转】configure/make/make install的使用说明
  • PHP转义Json里的特殊字符的函数
  • C# 获取本机的所有ip地址,并过滤内网ip
  • 位/字节/ASCII/UTF-8/GBK/GB2312/Unicode 扫盲
  • Spark RDD学习: aggregate函数
  • 4个实用的微服务测试策略
  • CODING 缺陷管理功能正式开始公测
  • CSS居中完全指南——构建CSS居中决策树
  • css选择器
  • Java Agent 学习笔记
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • jdbc就是这么简单
  • SQL 难点解决:记录的引用
  • vue 个人积累(使用工具,组件)
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 理清楚Vue的结构
  • 听说你叫Java(二)–Servlet请求
  • 网页视频流m3u8/ts视频下载
  • MyCAT水平分库
  • 阿里云服务器如何修改远程端口?
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # Apache SeaTunnel 究竟是什么?
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2022 CVPR) Unbiased Teacher v2
  • (AngularJS)Angular 控制器之间通信初探
  • (分类)KNN算法- 参数调优
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (十) 初识 Docker file
  • (十三)Flask之特殊装饰器详解
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)树状数组
  • .jks文件(JAVA KeyStore)
  • .NET Core引入性能分析引导优化
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @Autowired注解的实现原理
  • @Bean注解详解