CV13 图像分辨率操作(图像金字塔与resize()函数)
文章目录
- 1.图像金字塔的作用
- 2.高斯金字塔
- 2.1理论研究——分辨率缩小
- 2.2程序分析
- 2.3效果图
- 2.4拉普拉斯金字塔
- 3.图像缩放—resize()函数
- 3.1resize()函数介绍
- 3.2interpolation
1.图像金字塔的作用
通常,我们过去使用的是恒定大小的图像。但是在某些情况下,我们需要使用不同分辨率的(相同)图像。
例如,当在图像中搜索某些东西(例如人脸)时,我们不确定对象将以多大的尺寸显 示在图像中。在这种情况下,我们将需要创建一组具有不同分辨率的相同图像,并在所有图像中搜索对象。
这些具有不同分辨率的图像集称为“图像金字塔”(因为当它们堆叠在底部时,最高分辨 率的图像位于顶部,最低分辨率的图像位于顶部时,看起来像金字塔)。
2.高斯金字塔
2.1理论研究——分辨率缩小
高斯金字塔,首先将图像进行高斯核卷积,并删除原图中的所有偶数行和偶数列,最终缩小图像
其中,高斯核卷积运算就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值(券种不同)经过加权平均后得到。常见的 33与 55 高斯核(CV9 2D卷积与图像滤波)
高斯核卷积让临近中心的像素点具有更高的重要度,对周围像素计算加权平均值,如下图所示,其中心位置权重最高为 0.4。
进行向下采样之后,所得到的图像 Gi+1 具有 M/2 * N/2 个像素,只有原图的四分之一。通过对输入的原始图像不停迭代以上步骤就会得到整个金字塔。注意,由于每次向下取样会删除偶数行和列,所以它会不停地丢失图像的信息
- 将level0级别的图像转换为 level1,level2,level3,level4,图像分辨率不断降低的过程称为向下取样
- 将level4级别的图像转换为 level3,level2,level1,leve0,图像分辨率不断增大的过程称为向上取样
2.2程序分析
import cv2
import matplotlib.pyplot as plt
import numpy as npimg = cv2.imread('img.png')#经过几次高斯金字塔后
dowm = cv2.pyrDown(img)
dowm1=cv2.pyrDown(dowm)
dowm2=cv2.pyrDown(dowm1)cv2.imshow('dowm',dowm2)
cv2.waitKey(0)
cv2.destroyAllWindows()
上采样:就是图片放大,使用pryUp函数。上采样的步骤:先将图像在每个方向放大为原来的两倍,新增的行和列用0填充,再使用先前同样的内核与放大后的图像卷积,获得新增像素的近似值。
下采样:就是图片缩小,使用pyrDown函数。下采样步骤:先将图片进行高斯内核卷积,再将所有偶数列去除。
注意:上采样和下采样是不可逆的!
2.3效果图
我们把3次经高斯金字塔降分辨率的图打开看看
可见,随着pyrdowm不断降分辨率,图片变得十分模糊了
参考资料:OpenCV计算机视觉学习(7)——图像金字塔(高斯金字塔,拉普拉斯金字塔,图像缩放resize函数
2.4拉普拉斯金字塔
拉普拉斯金字塔由高斯金字塔形成。没有专用功能。拉普拉斯金字塔图像仅像边缘图像。它的大多数元素为零。它们用于图像压缩。拉普拉斯金字塔的层由高斯金字塔的层与高斯金字塔的高层的扩展版本之间的差形成
import cv2
import matplotlib.pyplot as plt
import numpy as npimg = cv2.imread('p2 (4).png')
dowm = cv2.pyrDown(img)
dowm_up = cv2.pyrUp(dowm)
l_1 = img-dowm_upcv2.imshow('l_1',l_1)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.图像缩放—resize()函数
3.1resize()函数介绍
cv2.resize()函数是opencv中专门来调整图片的大小,改变图片尺寸,相比于金字塔,其效果更好
import cv2
import numpy as npimg = cv2.imread('MyPic.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)img2 = cv2.resize(gray,(120,120),interpolation=cv2.INTER_LANCZOS4)
print(img.shape,gray.shape,img2.shape)cv2.imshow('result',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果:(290, 290, 3) (290, 290) (120, 120)
cv2.resize()函数
功能:对图像大小(分辨率)的操作
输入参数:
- 图像名(gray)
- 预缩放的分辨率(120,120),输出的尺寸格式为(宽,高)
- interpolation:这个是指定插值的方式,图像缩放之后,肯定像素要进行重新计算的,就靠这个参数来指定重新计算像素的方式
3.2interpolation
interpolation有以下几种:
- INTER_NEAREST - 最邻近插值
- INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法
- INTER_AREA - 区域插值(使用像素区域关系进行重采样)
- INTER_CUBIC - 三次样条插值 (超过4x4像素邻域内的双立方插值)
- INTER_LANCZOS4 - Lanczos插值(超过8x8像素邻域内的Lanczos插值)
对于插值方法,正常情况下使用默认的双线性插值法就够了。不过这里还是有建议的:若要缩小图像,一般情形下最好用 CV_INTER_AREA
来插值,而若要放大图像,一般情况下最好用 CV_INTER_CUBIC
(效率不高,慢,不推荐使用)或 CV_INTER_LINEAR
(效率较高,速度较快,推荐使用)
几种常用方法的效率为:
最邻近插值>双线性插值>双立方插值>Lanczos插值
但是效率和效果是反比的,所以根据自己的情况酌情使用
CV13 图像分辨率操作(图像金字塔与resize()函数)相关推荐
- 图像处理基础(四)_图像分辨率、图像模式及通道讲解
位图 位图图像(bitmap): 亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的.这些点可以进行不同的排列和染色以构成图样.当放大位图时,可以看见赖以构成整个图像的无数单个方块.扩大 ...
- 图像金字塔与resize函数
图像金字塔 将一层层图像比喻成金字塔,层级越高,图像越小,分辨率越低. 高斯金字塔:向下降采样: 拉普拉斯金字塔:向上采样,通过金字塔低层图像重建上层未采样图像: 金字塔的产生 用高斯核对图像进行卷积 ...
- opencv python 图像形态学操作/图像腐蚀/图像膨胀/开运算/闭运算/顶帽/黑帽
Morphological Transformations 1图像腐蚀 腐蚀的基本思想:侵蚀前景物体的边界(总是试图保持前景为白色):内核在图像中滑动(如在2D卷积中).只有当内核下的所有像素都是1时 ...
- 图像分辨率+像素+尺寸+文件内存大小
图像分辨率 1.图像分辨率是指在计算机中保存和显示一幅数字图像所具有的分辨率,它和图像的像素有直接的关系.例如,一张分辨率为640×480像素的图片,其分辨率就达到了307200像素,也就是常说的30 ...
- 相机分辨率, 图像分辨率
1. 相机的200万像素,2000万像素指的是感光器件 得到的像素个数,我们看的是照片,要看每英寸所包含的像素个数,这个反映了图像的清晰程度: 2. 图像分辨率是图像密度,(ppi),单位尺寸有多少像 ...
- 图像分辨率、像素和宽高比有什么区别?如何在线修改图片尺寸大小?
我们生活中总会遇到各种各样关于图片的名词,比如图像分辨率.像素.宽高比,那么这些词语都是什么意思呢,我们在修改图片尺寸大小的时候究竟应该修改哪个维度的尺寸?在修改图片尺寸前该如何选择合适的图片尺寸?如 ...
- 点阵图像与矢量图像的计算机记录原理,像素,分辨率,位图,失量图的含义是什么...
1. 矢量图矢量图又叫向量图,是用一系列计算机指令来描述和记录一幅图,一幅图可以解为一系列由点.线.面等到组成的子图,它所记录的是对象的几何形状.线条粗细和色彩等.生成的矢量图文件存储量很小,特别适用 ...
- python opencv resize函数_Python OpenCV中的resize()函数的使用
改变图像大小意味着改变尺寸,无论是单独的高或宽,还是两者.也可以按比例调整图像大小. 这里将介绍resize()函数的语法及实例. 语法 函数原型 cv2.resize(src, dsize[, ds ...
- 基于OpenCV的图像强度操作
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 01. 什么是图像强度操作 更改任何通道中的像素值 对图像的数学运 ...
最新文章
- 学计算机视觉台式机,回顾2020,2020年最受欢迎的7种电脑视觉工具
- springboot jpa 复合主键 联合主键
- 企业分布式微服务云SpringCloud SpringBoot mybatis (十)Spring Boot多数据源配置与使用Spring-data-jpa支持...
- AUTOSAR专业知识篇(八)-大众ID.4 X网络架构详解
- java 内存泄露 书籍_java虚拟机内存溢出和泄漏实例
- 为什么说ip协议是无连接协议
- python形参中传入两个实参_C语言学习第3篇---形参-实参概念剖析
- oracle select 变量_详解oracle数据库优化参数--cursor_sharing
- Stack与queue的底层实现、区别。
- 计算机音乐创作是什么,2021计算机音乐创作的作曲方式探究论文
- React-Router4按需加载
- 系统批量运维管理器Fabric详解
- 使用Node.js 搭建静态服务器
- 【POJ1050+POJ2018+HDOJ6638+牛客1006D】最大子段和问题
- iis php url rewrite,IIS 7.5 使用URL Rewrite模块的简单设置实现网页跳转
- pip install 时 WARNING: No metadata found in e:\anaconda\lib\site-packages 问题解决
- REDO和UNDO详解
- 什么是商业智能(BI)?
- lighttp 配置php扩展包,Lighttpd配置
- springboot传图片到前端之有手就行
热门文章
- 智能化无线网关安全审计系统
- GCC soft float ABI接口gcc-arm-Linux-gnueabi/ARMARCH7gnu和gcc-arm-linux-gnueabihf以及ARMARCH7sfgnu
- Huffman编码用MTLAB的实现及编码注释----------Matlab
- 出海东南亚:印尼网红营销现状和发展趋势
- [Unity][安卓]unity获取唯一ID,游客登陆
- Android60运行时权限处理完全解析(转载)
- 听洞口一中校友张小龙(微信之父)的演讲有感
- 苹果手机屏幕录制在哪_手机屏幕录制工具
- 机器学习笔记 - 使用 Pix2Pix 进行图像翻译
- 你所不知的窝窝头科技