【图像处理】——上采样、下采样、在模板匹配中的金字塔加速策略
目录
1、下采样
Python自带函数
自定义函数
Python实现下采样
2、上采样
Python自带函数
自定义函数
Python实现
3、金字塔加速策略
金字塔加速模板匹配具体步骤:
具体可参考:https://blog.csdn.net/Eastmount/article/details/89341077
本文补充了用Python自定义函数来实现下采样和上采样
1、下采样
Python自带函数
dst = pyrDown(src[, dst[, dstsize[, borderType]]])
- src表示输入图像,
- dst表示输出图像,和输入图像具有一样的尺寸和类型
- dstsize表示输出图像的大小,默认值为Size()
- borderType表示像素外推方法,详见cv::bordertype
自定义函数
首先高斯模糊
再将偶数行和列的像素格删除
为了防止删除后邻近像素相差较大,一般需要对下采样后的图像进行2*2的均值平滑操作
Python实现下采样
import cv2
import numpy as np
img = cv2.imread('pic1.jpg',0)
#自定义
def defImgDownM(img):h,w = img.shape#定义下采样输出图像大小if h%2 == 0:h = int(h/2)#这里是因为除法得到的是2.0,而创建新图像时的行列数必须是整数else:h = int(h/2) + 1#若为偶数行数则直接一半像素,否则就是向下取整再加1if w%2 == 0:w = int(w/2)else:w = int(w/2) + 1#若为偶数列数则直接一半像素,否则就是向下取整再加1imgDown = np.zeros((h,w),np.uint8)#定义高斯卷积核kernalDown = np.array([[1/16,2/16,1/16],[2/16,4/16,2/16],[1/16,2/16,1/16]])#1、进行高斯模糊img1 = cv2.filter2D(img, -1, kernalDown)#-1表示和原图像深度一样,也就是大小和比特都和原图像一样#2、删除偶数列和行for i in range(h):for j in range(w):imgDown[i,j] = img1[2*i,2*j]#3、均值平滑krenal = np.array([[1/4,1/4],[1/4,1/4]])imgDown = cv2.filter2D(imgDown, -1, krenal)cv2.namedWindow('defImgDown',0)cv2.namedWindow('1',0)cv2.imshow('1',img)cv2.imshow('defImgDown',imgDown)cv2.waitKey(0)
#
def sysImgDown(img):imgdown = cv2.pyrDown(img)cv2.namedWindow('sysImgDown',0)cv2.imshow('sysImgDown',imgdown)cv2.waitKey(0)if __name__ == '__main__':defImgDownM(img)sysImgDown(img)
2、上采样
Python自带函数
dst = pyrUp(src[, dst[, dstsize[, borderType]]])
- src表示输入图像,
- dst表示输出图像,和输入图像具有一样的尺寸和类型
- dstsize表示输出图像的大小,默认值为Size()
- borderType表示像素外推方法,详见cv::bordertypes
自定义函数
(1)定义输出图像,扩大成原来的2倍
(2)将原先的像素依次复制给新图像的偶数列
(3)利用4倍的高斯核进行卷积
(4)得到的就是上采样的图像了
Python实现
import cv2
import numpy as np
img = cv2.imread('pic1.jpg',0)
h,w = img.shape
#1、定义新图像大小
img1 = np.zeros((2*h,2*w),np.uint8)
#定义4倍的高斯核
kernal = np.array([[4/16,8/16,4/16],[8/16,16/16,8/16],[4/16,8/16,4/16]])
for i in range(h):for j in range(w):img1[2*i,2*j] = img[i,j]
#卷积
img1 = cv2.filter2D(img1, -1, kernal)
#Python自带的函数
img2 = cv2.pyrUp(img)# ##下面是进行多次下采样
# img11 = img1.copy()
# for i in range(6):
# img11 = cv2.pyrDown(img11)
# print(img11.shape)cv2.namedWindow('1',0)
cv2.namedWindow('2',0)
cv2.imshow('1',img1)
cv2.imshow('2',img11)
cv2.waitKey(0)
3、金字塔加速策略
这个策略主要用在模板匹配上,先将模板和图像以相同的层数进行下采样,得到匹配点后再进行上采样返回到第0层得到第0层时的坐标
金字塔加速模板匹配具体步骤:
1、先获得同层级的模板和原图像下采样图像;
2、用高层的模板匹配同一层级的待测图像(假设3层,0,1,2,3)
3、根据2可以得到匹配点(x3,y3),设这个点为匹配区域的左上角点
4、将其向上一层级返回(x2,y2)= (2x3,2y3)
...
5、如此循环,返回到第0层即源图像,(x0,y0)=(2^nxn,2^nyn)
6、得到角点后就能够绘制出ROI区域,左上角点(x0,y0),右下角点(x0',y0')= (x0+x0_template,y0+y0_template),其中x0_template是模板第0级的高
【图像处理】——上采样、下采样、在模板匹配中的金字塔加速策略相关推荐
- 深度学习上采样下采样概念以及实现
#pic_center =400x 系列文章: 文章目录 参考博客 概念 上采样 下采样 实现 上采样 下采样 参考博客 [深度学习]上采样,下采样,卷积 torch.nn.functional.in ...
- 降采样,下采样,池化
概念 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1.使得图像符合显示区域的大小:2.生成对应图像的缩略图. 放大图像(或称为上采样(upsam ...
- 模板匹配中差值的平方和(SSD)与互相关准则的关系
模板匹配中差值的平方和(SSD)与互相关准则的关系 zouxy09@qq.com http://blog.csdn.net/zouxy09 模板匹配TemplateMatching是在图像中寻找目标的 ...
- 过采样与欠采样图像重采样(上采样下采样)
参考文章: https://blog.csdn.net/majinlei121/article/details/46742339 https://blog.csdn.net/Chaolei3/arti ...
- 重采样 上采样 下采样
重采样的原理: 重采样主要是分为上采样和下采样,在进行采样的过程中,需要注意采样的倍率的问题,并不是可以随意的改变采样率的大小的,根据采样定理:在进行模拟/数字信号的转换过程中,当采样频率fs.max ...
- 卷积 反卷积 上采样 下采样 区别
1.卷积 就是利用卷积核 步长前进 卷积整个图片 2.反卷积 反卷积的具体操作 原图输入尺寸为[1,3,3,3]对应[batch_size,channels,width,height] 反卷积tco ...
- opencv-python图像处理 ----边界矩形、外接圆、模板匹配
为了能好的体现函数,使用画板又画了一幅图像用来轮廓检测 运行上一节的笔记代码,可以检测出来形状的轮廓. 边界矩形可以将某一边界使用矩形绘制出来,确定一个矩形需要四个点,因此使用函数: def f_co ...
- 副族元素从上到下原子半径_元素周期表中原子半径跟元素序数的关系
展开全部 元素周期表中原子半径跟元素序数的关系: 1.主族元素:同主族的,从上到下,半径逐渐32313133353236313431303231363533e58685e5aeb93133336566 ...
- python下采样_python + opencv 如何在上采样下采样之后导出图片?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import cv2 def pyramid_demo(image): level = 3 temp = image.copy() pyramid_ima ...
最新文章
- tomcat启动时一闪而过的问题
- Core Java 第三章 Java基本的程序设计结构
- ThinkPHP 模型方法 setInc() 和 setDec()
- 推荐算法 之协同过滤
- oracle的学习笔记(转)
- ASP.NET Core 1.0 开发记录
- linux 函数学习--kzalloc()
- 【软件开发底层知识修炼】二十八 C/C++中volatile的作用
- 很多人认为,因为我们是平民,做生意试不了错,输不起,试错成本太高
- Delphi学习之函数 ⑨汉字拼音功能函数
- 复盘-对过去的事情做思维演练
- 国庆促销海报模板素材
- Hadoop-HDFS可靠性
- 安卓手机投屏到win10电脑
- 一个点的经度和纬度,以这个点为圆心,1000米为半径,最大的经度和纬度,最小的经度和纬度
- 电脑找回,怎么找回电脑上删除的文件_怎么找回电脑删除的文件-win7之家
- 什么是敏捷开发Scrum
- vscode 忽略pep8的指定报错码
- 【编译原理】第五章 语法制导翻译
- R 利用回归分析与时间序列预测北京市PM2.5
热门文章
- Oracle配置监听要注意的地方
- (转)Unity3DUnity3D在android下调试
- About me [my way]
- 十进制 转换 2-10 进制,int的扩展方法
- C++中string与int\double等互转
- CSS-合理使用z-index控制盒子视轴高度,解决z-index失效
- Failed to execute goal maven-gpg-plugin 1.5 Sign
- ios修改了coredata数据结构后,更新安装会闪退
- 交换两个整形变量的数值
- Visual Studio 常用快捷键 (二)