目录

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级的高

【图像处理】——上采样、下采样、在模板匹配中的金字塔加速策略相关推荐

  1. 深度学习上采样下采样概念以及实现

    #pic_center =400x 系列文章: 文章目录 参考博客 概念 上采样 下采样 实现 上采样 下采样 参考博客 [深度学习]上采样,下采样,卷积 torch.nn.functional.in ...

  2. 降采样,下采样,池化

    概念 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1.使得图像符合显示区域的大小:2.生成对应图像的缩略图. 放大图像(或称为上采样(upsam ...

  3. 模板匹配中差值的平方和(SSD)与互相关准则的关系

    模板匹配中差值的平方和(SSD)与互相关准则的关系 zouxy09@qq.com http://blog.csdn.net/zouxy09 模板匹配TemplateMatching是在图像中寻找目标的 ...

  4. 过采样与欠采样图像重采样(上采样下采样)

    参考文章: https://blog.csdn.net/majinlei121/article/details/46742339 https://blog.csdn.net/Chaolei3/arti ...

  5. 重采样 上采样 下采样

    重采样的原理: 重采样主要是分为上采样和下采样,在进行采样的过程中,需要注意采样的倍率的问题,并不是可以随意的改变采样率的大小的,根据采样定理:在进行模拟/数字信号的转换过程中,当采样频率fs.max ...

  6. 卷积 反卷积 上采样 下采样 区别

    1.卷积 就是利用卷积核  步长前进 卷积整个图片 2.反卷积 反卷积的具体操作 原图输入尺寸为[1,3,3,3]对应[batch_size,channels,width,height] 反卷积tco ...

  7. opencv-python图像处理 ----边界矩形、外接圆、模板匹配

    为了能好的体现函数,使用画板又画了一幅图像用来轮廓检测 运行上一节的笔记代码,可以检测出来形状的轮廓. 边界矩形可以将某一边界使用矩形绘制出来,确定一个矩形需要四个点,因此使用函数: def f_co ...

  8. 副族元素从上到下原子半径_元素周期表中原子半径跟元素序数的关系

    展开全部 元素周期表中原子半径跟元素序数的关系: 1.主族元素:同主族的,从上到下,半径逐渐32313133353236313431303231363533e58685e5aeb93133336566 ...

  9. python下采样_python + opencv 如何在上采样下采样之后导出图片?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import cv2 def pyramid_demo(image): level = 3 temp = image.copy() pyramid_ima ...

最新文章

  1. tomcat启动时一闪而过的问题
  2. Core Java 第三章 Java基本的程序设计结构
  3. ThinkPHP 模型方法 setInc() 和 setDec()
  4. 推荐算法 之协同过滤
  5. oracle的学习笔记(转)
  6. ASP.NET Core 1.0 开发记录
  7. linux 函数学习--kzalloc()
  8. 【软件开发底层知识修炼】二十八 C/C++中volatile的作用
  9. 很多人认为,因为我们是平民,做生意试不了错,输不起,试错成本太高
  10. Delphi学习之函数 ⑨汉字拼音功能函数
  11. 复盘-对过去的事情做思维演练
  12. 国庆促销海报模板素材
  13. Hadoop-HDFS可靠性
  14. 安卓手机投屏到win10电脑
  15. 一个点的经度和纬度,以这个点为圆心,1000米为半径,最大的经度和纬度,最小的经度和纬度
  16. 电脑找回,怎么找回电脑上删除的文件_怎么找回电脑删除的文件-win7之家
  17. 什么是敏捷开发Scrum
  18. vscode 忽略pep8的指定报错码
  19. 【编译原理】第五章 语法制导翻译
  20. R 利用回归分析与时间序列预测北京市PM2.5

热门文章

  1. Oracle配置监听要注意的地方
  2. (转)Unity3DUnity3D在android下调试
  3. About me [my way]
  4. 十进制 转换 2-10 进制,int的扩展方法
  5. C++中string与int\double等互转
  6. CSS-合理使用z-index控制盒子视轴高度,解决z-index失效
  7. Failed to execute goal maven-gpg-plugin 1.5 Sign
  8. ios修改了coredata数据结构后,更新安装会闪退
  9. 交换两个整形变量的数值
  10. Visual Studio 常用快捷键 (二)