图像金字塔及其在 OpenCV 中的应用范例(上)
前言
图像金字塔是计算机图形学中非常重要的一个概念。
本文将详细介绍这个概念,以及它的实现与应用。
图像金字塔的定义
图像金字塔是一组图像的集合,集合中的所有图像都是通过对某一图像连续降采样得到的一组图像序列。
有两种经典的金字塔:高斯金字塔和拉普拉斯金字塔,前者采用向下采样,后者是向上采样需要的缺失的信息。
向下采样(生成高斯金字塔)的具体操作为:
1. 对图像进行高斯卷积
2. 删除所有的偶数行和偶数列
向上采样的缺失信息(生成拉普拉斯金字塔)的具体操作为:
1. 首先将维数扩大两倍
2. 将扩大位的值置为0
3. 对新的图像进行高斯卷积
4. 用新的层次的高斯金字塔减去 3 中形成的图像
采用 OpenCV 实现向下,向上采样
- // 此头文件包含图像IO函数的声明
- #include "highgui.h"
- // 此头文件包含基本的图像处理函数和高级计算机视觉算法
- #include "cv.h"
- #include <iostream>
- int main (void) {
- // 将D盘目录下名为" 1.jpg "的图像加载至内存并获得一个指向该图像内存块的指针img
- IplImage * img = cvLoadImage ("D:\\1.jpg");
- // 创建一个窗口显示平滑处理前的图像
- cvNamedWindow ("采样前", CV_WINDOW_AUTOSIZE);
- // 将图像装载进窗口并显示此窗口
- cvShowImage ("采样前", img);
- // 创建两个新的图像内存块,以存放采样结果。
- IplImage * up = cvCreateImage (
- cvSize(*img->width, *img->height),
- img->depth,
- img->nChannels
- );
- IplImage * down = cvCreateImage (
- cvSize(img->width/, img->height/),
- img->depth,
- img->nChannels
- );
- // 采样
- cvPyrUp (img, up, IPL_GAUSSIAN_5x5);
- cvPyrDown (img, down, IPL_GAUSSIAN_5x5);
- // 创建窗口显示采样后的图像
- cvNamedWindow ("向上采样", CV_WINDOW_AUTOSIZE);
- cvNamedWindow ("向下采样", CV_WINDOW_AUTOSIZE);
- // 将图像装载进窗口并显示窗口
- cvShowImage ("向上采样", up);
- cvShowImage ("向下采样", down);
- // 该函数的参数为 0 时,程序将等待用户触发一个按键操作。
- // 若参数为正整数,则程序将暂停该整数个毫秒单位直至用户有任何按键。
- cvWaitKey ();
- // 释放图像内存块
- cvReleaseImage (&img);
- cvReleaseImage (&up);
- cvReleaseImage (&down);
- // 关闭窗口同时释放窗口内存块
- cvDestroyWindow ("采样前");
- cvDestroyWindow ("向上采样");
- cvDestroyWindow ("向下采样");
- return ;
- }
运行结果
小结
下篇,将讲解图像金字塔的一个经典应用 - 图像分割。
图像金字塔及其在 OpenCV 中的应用范例(上)的更多相关文章
- 图像金字塔及其在 OpenCV 中的应用范例(下)
前言 本文将主要讲解如何使用 OpenCV 实现图像分割,这也是图像金字塔在 OpenCV 中的一个重要应用. 关于图像分割 在计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分 ...
- opencv中的meanshift图像切割
Meanshift(均值漂移)是一种在一组数据的密度分布中寻找局部极值的稳定的方法.Meanshift不仅能够用于图像滤波,视频跟踪,还能够用于图像切割. 通过给出一组多维数据点,其维数是(x,y,r ...
- 【转】图像金字塔PyrDown,PyrUP
原文链接:http://blog.csdn.net/davebobo/article/details/51885043 [图像金字塔] 图像金字塔这个词,我们经常在很多地方可以看到.它是图像多尺度表达 ...
- OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...
- 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...
- OpenCV探索之路(五):图片缩放和图像金字塔
对图像进行缩放的最简单方法当然是调用resize函数啦! resize函数可以将源图像精确地转化为指定尺寸的目标图像. 要缩小图像,一般推荐使用CV_INETR_AREA来插值:若要放大图像,推荐使用 ...
- [OpenCV-Python] OpenCV 中图像特征提取与描述 部分 V (一)
部分 V图像特征提取与描述 OpenCV-Python 中文教程(搬运)目录 29 理解图像特征 目标本节我会试着帮你理解什么是图像特征,为什么图像特征很重要,为什么角点很重要等.29.1 解释 我相 ...
- [OpenCV-Python] OpenCV 中图像特征提取与描述 部分 V (二)
部分 V图像特征提取与描述 OpenCV-Python 中文教程(搬运)目录 34 角点检测的 FAST 算法 目标 • 理解 FAST 算法的基础 • 使用 OpenCV 中的 FAST 算法相关函 ...
- Python+OpenCV图像处理(十一)—— 图像金字塔
简介:图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构.简单来说,图像金字塔就是用来进行图像缩放的. 进行图像缩放可以用图像金字塔,也可以使用 ...
随机推荐
- ccpc 2016 省赛
1.configuration if ide. 2.file import and export. 3.check your program more than once. ============= ...
- POJ 3468 区间更新,区间求和(经典)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 72265 ...
- 给出一个长度为n的数列,请对于每一个数,输出他右边第一个比他大的数。n<=100000.
RT,一个ppt里看到的题,不过没讲做法.百度上基本搜不到.自己想了个做法,理论上可行,复杂度也是O(nlogn). 首先,做一次RMQ,求区间最大值. 对于任意一个数s[i],可以用logn的时间求 ...
- C# 正则表达式 验证:数字、带小数点数字、电话和手机
一.带小数点数字 public static bool IsNumber(string input) { string pattern = "^-?\\d+$|^(-?\\d+)(\\.\\ ...
- 三元运算+lambda表达式
#三元运算,三目运算,if else简写 if 1 == 1: name = "liangml" else: name = "NB" #如果 1==1 成立,n ...
- SelectedRows.CurrentRowSelected 和 DeleteItem
procedure TBMListEh.SetCurrentRowSelected(Value: Boolean); var Index: Integer; Current: TUniBookmark ...
- Problem C HDU 5224
Description There is a piece of paper in front of Tom, its length and width are integer. Tom knows t ...
- CSS 的class属性居然可以并(有点像并,有点像与)操作
<a href="javascript:;" class="btn btn-default doc-event-1">创建div容器</a&g ...
- PHP ceil() 函数
定义和用法 ceil() 函数向上舍入为最接近的整数. 语法 ceil(x) 参数 描述 x 必需.一个数. 说明 返回不小于 x 的下一个整数,x 如果有小数部分则进一位.ceil() 返回的类型仍 ...
- hdu2196 树的直径 + bfs
//Accepted 740 KB 15 ms //树的直径 //距离一个顶点最远的点一定是树的直径的一个端点 #include <cstdio> #include <cstring ...