IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 40_OpenCV均匀调整图像大小,增大或缩小图像 -> 正文阅读

[人工智能]40_OpenCV均匀调整图像大小,增大或缩小图像

目录

1. 均匀调整大小 cv::resize()

2. 图像金字塔

2.1 cv::pyrDown()

2.2 cv::buildPyramid()

2.3 cv::pyrUp()

2.4 高斯金字塔的逆——拉普拉斯金字塔


1. 均匀调整大小 cv::resize()

使用cv::resize()时,提供输入图像和想要转换的大小,该函数会生成我们想要的大小的图像。

void cv::resize(
	cv::InputArray src,  // input image
	cv::OutputArray dst,  // result image
	cv::Size dsize,  // new size
	double fx = 0,  // x-rescale
	double fy = 0,  // y-rescale
	int interpolation = cv::INTER_LINEAR  // interpolation method
);

dsize指定输出图像的大小有两种方式:

  • 使用绝对尺寸,这种情况下dsize参数直接设置为想要的结果图像dst的大小;
  • 使用相对尺寸,将dsize设置为cv::Size(0,0),分别将fx和fy设置为要应用于x轴和y轴的比例因子。

参数interpolation是插值方法,默认是线性插值,其它可选如下:

插值含义
cv::INTER_NEAREST最近邻插值
cv::INTER_LINEAR双线性插值,默认插值
cv::INTER_AREA像素区域重采样
cv::INTER_CUBIC双三次插值
cv::INTER_LANCZOS4插值(超过8x8个领域)
  • cv::INTER_NEAREAT,从源图像中最接近的像素获取调整大小的像素的值;
  • cv::INTER_LINEAR,根据到目标像素的接近度来线性加权2x2的源像素值;
  • cv::INTER_AREA,将新的调整大小的像素放置在旧像素上,然后平均覆盖像素值;扩展图像时,cv::INTER_AREA与cv::INTER_NEAREST相同。
  • cv::INTER_CUBIC,在源图像中的4x4周围像素之间拟合三次样条,从拟合的样条中读出相应的目标值;
  • cv::INTER_LANCZOS4,使用Lanczos插值,与三次方法类似,使用像素周围的8x8区域的信息。可以增加图像感知清晰度。

cv::Mat类有一个成员函数也是resize(),与cv::resize()是不同的。

????????cv::resize()创建一个不同大小的图像,原始像素插值映射到该图像上。
????????cv::Mat::resize()调整的是正在调用其成员的图像大小,并将图像裁剪为新的大小,像素不会插值(或外推)。

2. 图像金字塔

图像金字塔是图像的集合,把降采样和平滑滤波结合在一起,由单个原始图像产生,连续降采样,直到达到一些期望的停止点,这个停止点可能是单像素图像。

经常用到的两种图像金字塔:高斯和拉普拉斯金字塔。
高斯金字塔用于降采样图像;
要从金字塔中较低的图像重构上采样图像时,需要拉普拉斯金字塔。

opencv提供两个函数进行降采样图像:cv::pyrDown()和cv::buildPyramid()。提供函数cv::pyrUp()上采样图像。

2.1 cv::pyrDown()

cv::pyrDown()从其前身产生每个金字塔,首先将层G[i]与高斯核卷积,然后去除每个偶数行和列,从而生成高斯金字塔中的层(i+1)。这种情况下,每个图像是其前身的四分之一。cv::pyrDown()函数原型:

void cv::pyrDown(
	cv::InputArray src,  // input image
	cv::OutputArray dst,  // result image
	const cv::Size& dstsize = cv::Size()  // output image size
);

dstsize默认值为cv::Size()时,输出图像的大小为((src.cols+1)/2,(src.rows+1)/2)。
dstsize如果不使用默认值,可以设定dstsize,但需要按照如下限制设置:

| dstsize.width*2 - src.cols | ≤ 2
| dstsize.height*2 - src.rows | ≤ 2

这个限制表示目标图像差不多是源图像大小的一半。

2.2 cv::buildPyramid()

如果希望构建一系列新图像,每个新图像从前一个图像缩减,可以使用函数cv::buildPyramid(),该函数创建一个输出图像堆栈。函数原型:

void cv::buildPyramid(
	cv::InputArray src,  // input image
	cv::OutputArrayOfArrays dst,  // output images from pyramid
	int maxlevel  // number of pyramid levels
);

dst可以认为是类型为cv::Mat的STL向量,maxlevel表示构建多少个金字塔级别,必须大于或等于0,表示要生成的金字塔图像的数量。

当cv::buildPyramid()运行时,将返回dst中的长度为maxlevel+1的向量,dst中的第一个条目与src相同,第二个图像是源图像大小的一半,第三个图像是第二个图像大小的一半,以此类推。

2.3 cv::pyrUp()

cv::pyrUp()将现有图像转换为每个方向两倍大的图像。首先将图像大小增加到每个维度的原始值的两倍,新的偶数行填充0,然后使用高斯滤波器执行卷积以近似丢失像素的值。

cv::pyrDown()先高斯平滑,然后缩减图像尺寸;
cv::pyrUp()先增大图像,然后高斯平滑填充;

函数原型:

void cv::pyrUp(
	cv::InputArray src,  // input image
	cv::OutputArray dst,  // result image
	const cv::Size& dstsize = cv::Size()  // output image size
);

类似cv::pyrDown(),如果dstsize设置为默认值,结果图像与源图像的大小的两倍相同。也可以设置dstsize,将输出我们希望的图像的大小,但是也遵循一些限制:

| dstsize.width - src.cols*2 | ≤ (dstsize.width % 2)
| dstsize.height - src.rows*2 | ≤ (dstsize.height %2)

这个限制表示目标图像非常接近源图像大小的两倍。

2.4 高斯金字塔的逆——拉普拉斯金字塔

为了恢复原始的图像,需要访问下采样过程丢弃的信息,这个数据形成了拉普拉斯金字塔。拉普拉斯金字塔的第i层由以下定义:

L[i] = G[i] - UP(G[i+1])?g[5x5]

UP()将原始图像中的位置(x,y)中的每个像素映射到目标图像中的像素(2x+1,2y+1)进行大小化,符号?表示卷积;g[5x5]是高斯核。UP(G[i+1])?g[5x5]是opencv提供的cv::pyrUp()运算符的定义,所以可以直接用如下换算:
L[i] = G[i] - pyrUp(G[i+1])

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 18:58:09  更:2022-05-21 19:00:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:19:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码