1.cv2.pyrDown(src)  对图片做向下采样操作,通常也可以做模糊化处理

参数说明:src表示输入的图片

2.cv2.pyrUp(src) 对图片做向上采样操作

参数说明:src表示输入的图片

高斯金字塔:分为两种情况:一种是向下采样,一种是向上采样

下采样的原理:先与Gi进行高斯卷积即高斯滤波,再将所有偶数行和列去除,实现行和列维度缩减的目的

代码:

第一步:读入图片

第二步:使用cv2.pyrDown进行高斯金字塔的下采样

第三步:使用自己的步骤做高斯金字塔的下采样,先对图像作高斯滤波,即与高斯内核卷积

第四步:将所有偶数行去除

第五步:将所有偶数列去除

import cv2
import numpy as np # 第一步:读入图片
img = cv2.imread('AM.png', 0)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 第二步:使用cv2.pyrDown进行金字塔的下采样
down = cv2.pyrDown(img)
cv2.imshow('down', down)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 按照步骤编写
# 第三步:进行高斯滤波操作,即进行高斯卷积
guassin = cv2.GaussianBlur(img, (5, 5), 1)
# 第四步:去除矩阵的偶数行
guassin_x = []
rows, columns = guassin.shape[:2]
for i in range(rows):
if i % 2 == 1:
guassin_x.append(guassin[i, :]) guassin_x = np.array(guassin_x)
# 第五步:去除矩阵的偶数列
guassin_y = []
for i in range(columns):
if i % 2 == 1:
guassin_y.append(guassin_x[:, i]) guassin_y = np.array(guassin_y).T
cv2.imshow('guassin', guassin_y)
cv2.waitKey(0)

高斯金字塔进行上采样操作, 第一步先对使用0进行填充,扩大其维度,再进行高斯滤波,对滤波的结果乘与4,获得其近似值

代码:

第一步:图片读入

第二步:使用cv2.pyrUp对图像进行放大操作

第三步:使用自己的方法,先给偶数行加zeros

第四步:给偶数列加zeros

第五步:进行高斯滤波,将像素点分散开,最后乘于4,做近似截断处理

import cv2
import numpy as np # 第一步读取图片
img = cv2.imread('AM.png', 0)
print(img.shape)
# 第二步:使用cv2.pyrUp进行图像金字塔的上采样
Up = cv2.pyrUp(img)
cv2.imshow('up', Up)
cv2.waitKey(0)

# 第三步:使用自己的方法计算,在偶数行插入zero
rows_zeros = []
rows, columns = img.shape[:2] for i in range(2*rows):
if i % 2 == 1:
rows_zeros.append(np.zeros((1, columns)).astype(int).ravel())
else:
rows_zeros.append(img[int(i/2), :]) rows_zeros = np.array(rows_zeros) # 第四步:在偶数列插入zeros
columns_zeros = []
for i in range(2*columns):
if i % 2 == 1:
columns_zeros.append(np.zeros((rows*2, 1)).astype(int).ravel())
else:
columns_zeros.append(rows_zeros[:, int(i/2)]) columns_zeros = np.array(columns_zeros).T # 第五步:进行高斯卷积操作,乘于4倍后做近似处理
add_img_columns_g = np.round(cv2.GaussianBlur(columns_zeros, (5, 5), 1)).astype(int) * 4
frames = []
# 对于大于255的像素做截断操作
for i in range(add_img_columns_g.shape[0]):
frame = []
for j in add_img_columns_g[i, :]:
if j > 255:
frame.append(255)
else:
frame.append(j)
frames.append(frame)
frames = np.array(frames)

机器学习进阶-图像金字塔与轮廓检测-图像金字塔-(**高斯金字塔) 1.cv2.pyrDown(对图片做向下采样) 2.cv2.pyrUp(对图片做向上采样)的更多相关文章

  1. 机器学习进阶-图像金字塔与轮廓检测-轮廓检测 1.cv2.cvtColor(图像颜色转换) 2.cv2.findContours(找出图像的轮廓) 3.cv2.drawContours(画出图像轮廓) 4.cv2.contourArea(轮廓面积) 5.cv2.arcLength(轮廓周长) 6.cv2.aprroxPloyDP(获得轮廓近似) 7.cv2.boudingrect(外接圆)..

    1. cv2.cvtcolor(img, cv2.COLOR_BGR2GRAY) # 将彩色图转换为灰度图 参数说明: img表示输入的图片, cv2.COLOR_BGR2GRAY表示颜色的变换形式 ...

  2. 机器学习进阶-图像金字塔与轮廓检测-模板匹配(单目标匹配和多目标匹配)1.cv2.matchTemplate(进行模板匹配) 2.cv2.minMaxLoc(找出矩阵最大值和最小值的位置(x,y)) 3.cv2.rectangle(在图像上画矩形)

    1. cv2.matchTemplate(src, template, method)  # 用于进行模板匹配 参数说明: src目标图像, template模板,method使用什么指标做模板的匹配 ...

  3. 3. OpenCV-Python——图像梯度算法、边缘检测、图像金字塔与轮廓检测、直方图与傅里叶变换

    一.图像梯度算法 1.图像梯度-Sobel算子 dst = cv2.Sobel(src, ddepth, dx, dy, ksize) ddepth:图像的深度 dx和dy分别表示水平和竖直方向 ks ...

  4. 机器学习进阶-背景建模-(帧差法与混合高斯模型) 1.cv2.VideoCapture(进行视频读取) 2.cv2.getStructureElement(构造形态学的卷积) 3.cv2.createBackgroundSubtractorMOG2(构造高斯混合模型) 4.cv2.morpholyEx(对图像进行形态学的变化)

    1. cv2.VideoCapture('test.avi') 进行视频读取 参数说明:‘test.avi’ 输入视频的地址2. cv2.getStructureElement(cv2.MORPH_E ...

  5. 图像金字塔、高斯金字塔、差分金字塔(DOG金字塔)、尺度空间、DoG (Difference of Gaussian)角点检测

    [图像金字塔] 图像金字塔是一种以多分辨率来解释图像的结构,通过对原始图像进行多尺度像素采样的方式,生成N个不同分辨率的图像.把具有最高级别分辨率的图像放在底部,以金字塔形状排列,往上是一系列像素(尺 ...

  6. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...

  7. Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔

    转自:https://blog.csdn.net/dcrmg/article/details/52561656 一. 图像金字塔 图像金字塔是一种以多分辨率来解释图像的结构,通过对原始图像进行多尺度像 ...

  8. 学习 opencv---(12)OpenCV 图像金字塔:高斯金字塔,拉普拉斯金字塔与图片尺寸缩放

    在这篇文章里,我们一起学习下 图像金字塔 的一些基本概念,如何使用OpenCV函数pyrUp和pyrDown 对图像进行向上和向下采样,以及了解专门用于缩放图像尺寸的resize函数的用法.此博文一共 ...

  9. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

随机推荐

  1. Foxmail Gmail Outlook

    三个邮件客户端都比较好,但是作为用户精力是非常有限地,必须优中选优. 我选outlook,非常值得拥有. 理由如下: (1)和office完美契合 (2)和生产环境完美契合 (3)免费 (4)良好地任 ...

  2. PAT 乙级 1077 互评成绩计算 (20)

    在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平 ...

  3. [Chrome]点击页面元素后全屏

    function isFullScreen() { return (document.fullScreenElement && document.fullScreenElement ! ...

  4. [UE4]小地图UI设计

    一.新建一个名为TestMiniMap的UserWidget用来使用小地图StaticMiniMap. 二.在左侧“User Created”面板中可以看到除自身以外的其他所有用户创建的UserWid ...

  5. SCCM2012 R2实战系列之十:解决WDS服务无法启动问题(错误1067:进程意外终止)

    在操作系统分发(OSD)之前需要开启PXE服务,然后会自动在SCCM服务器安装Windows Deployment Service. 但是之前在一次项目过程当中发现启用PXE服务后WDS无法启动,本以 ...

  6. Mysql之 配置文件读取顺序

    On Unix, Linux and Mac OS X, MySQL programs read startup options from the following files, in the sp ...

  7. tips:Java的Random类和Random函数

    tips:Java的Random类和Random函数! 随机数是一个很有趣的东西,在java中可以通过下面这2种方法得到: (1)Random类: Random类是java.util.Random这个 ...

  8. 【原创】重装Windows系统后Android studio无需重装,直接迁移

    每次重装Windows系统后重装各种开发环境让人苦不堪言,比如VS2013 +补丁,没有个小半天根本搞不定! 对与Android的开发者,同样安装JDK+Android Studio + Adnroi ...

  9. Linux性能优化 第五章 性能工具:特定进程内存

    5.1 Linux内存子系统 在诊断内存性能问题的时候,也许有必要观察应用程序在内存子系统的不同层次上是怎样执行的.在顶层,操作系统决定如何利用交换内存和物理内存.它决定应用程序的哪一块地址空间将被放 ...

  10. fatal error C1083: Cannot open include file: 'openssl/opensslv.h'

    在安装针对ELK系统的警告工具elastalert时,报错: fatal error C1083: Cannot open include file: 'openssl/opensslv.h',如下图 ...