OpenCV学习笔记(七) 图像金字塔 阈值 边界

2023-04-28,,

转自: OpenCV 教程

使用 图像金字塔 进行缩放

图像金字塔是视觉运用中广泛采用的一项技术。一个图像金字塔是一系列图像的集合 - 所有图像来源于同一张原始图像 - 通过梯次向下采样获得,直到达到某个终止条件才停止采样。有两种类型的图像金字塔常常出现在文献和应用中:

高斯金字塔(Gaussian pyramid): 用来向下采样
拉普拉斯金字塔(Laplacian pyramid): 用来从金字塔低层图像重建上层未采样图像

高斯金字塔

每一层都按从下到上的次序编号, 层级  (表示为  ,尺寸小于层级  ())。

缩小图像的过程:获取层级为  的金字塔图像步骤为

将  与高斯内核卷积:

将所有偶数行和列去除。

结果图像只有原图的四分之一。

放大图像的过程:

首先,将图像在每个方向扩大为原来的两倍,新增的行和列以0填充()
使用先前同样的内核(乘以4)与放大后的图像卷积,获得 “新增像素” 的近似值。

这两个步骤(向下和向上采样) 分别通过OpenCV函数 pyrUp 和 pyrDown 实现。

pyrUp( tmp, dst, Size( tmp.cols*2, tmp.rows*2 );

tmp: 当前图像, 初始化为原图像 src 。
dst: 目的图像( 显示图像,为输入图像的两倍)
Size( tmp.cols*2, tmp.rows*2 ) : 目的图像大小, 既然我们是向上采样, pyrUp 期待一个两倍于输入图像( tmp )的大小。

基本阈值操作

阈值是最简单的图像分割的方法。这样的图像分割方法是基于图像中物体与背景之间的灰度差异,而且此分割属于像素级的分割。

分为五种阈值化类型:二进制阈值化、反二进制阈值化、截断阈值化、阈值化为0、反阈值化为0。(都比较简单,详细介绍见教程)

threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );

src_gray: 输入的灰度图像的地址。
dst: 输出图像的地址。
threshold_value: 进行阈值操作时阈值的大小。
max_BINARY_value: 设定的最大灰度值(该参数运用在二进制与反二进制阈值操作中)。
threshold_type: 阈值的类型。从上面提到的5种中选择出的结果。

添加边界

大多数用到卷积操作的OpenCV函数都是将给定图像拷贝到另一个轻微变大的图像中,然后自动填充图像边界,这样卷积操作就可以在边界像素安全执行了(填充边界在操作完成后会自动删除)。

copyMakeBorder( src, dst, top, bottom, left, right, borderType, value );

src: 原图像
dst: 目标图像
topbottomleftright: 各边界的宽度。e.g. top = (int) (0.05*src.rows);
borderType: 边界类型,此处可以选择常数边界或者复制边界。

    BORDER_CONSTANT: 使用常数填充边界
    BORDER_REPLICATE: 复制原图中最临近的行或者列。

value: 如果 borderType 类型是 BORDER_CONSTANT, 该值用来填充边界像素。

OpenCV学习笔记(七) 图像金字塔 阈值 边界的相关教程结束。

《OpenCV学习笔记(七) 图像金字塔 阈值 边界.doc》

下载本文的Word格式文档,以方便收藏与打印。