python实现图像高斯金字塔的示例代码


Posted in Python onDecember 11, 2020
import cv2
import numpy as np
import matplotlib.pyplot as plt

# Grayscale
def BGR2GRAY(img):
  # Grayscale
  gray = 0.2126 * img[..., 2] + 0.7152 * img[..., 1] + 0.0722 * img[..., 0]
  return gray

# Bi-Linear interpolation
def bl_interpolate(img, ax=1., ay=1.):
  if len(img.shape) > 2:
    H, W, C = img.shape
  else:
    H, W = img.shape
    C = 1

  aH = int(ay * H)
  aW = int(ax * W)

  # get position of resized image
  y = np.arange(aH).repeat(aW).reshape(aW, -1)
  x = np.tile(np.arange(aW), (aH, 1))

  # get position of original position
  y = (y / ay)
  x = (x / ax)

  ix = np.floor(x).astype(np.int)
  iy = np.floor(y).astype(np.int)

  ix = np.minimum(ix, W-2)
  iy = np.minimum(iy, H-2)

  # get distance 
  dx = x - ix
  dy = y - iy

  if C > 1:
    dx = np.repeat(np.expand_dims(dx, axis=-1), C, axis=-1)
    dy = np.repeat(np.expand_dims(dy, axis=-1), C, axis=-1)

  # interpolation
  out = (1-dx) * (1-dy) * img[iy, ix] + dx * (1 - dy) * img[iy, ix+1] + (1 - dx) * dy * img[iy+1, ix] + dx * dy * img[iy+1, ix+1]

  out = np.clip(out, 0, 255)
  out = out.astype(np.uint8)

  return out

# make image pyramid
def make_pyramid(gray):
  # first element
  pyramid = [gray]
  # each scale
  for i in range(1, 6):
    # define scale
    a = 2. ** i

    # down scale
    p = bl_interpolate(gray, ax=1./a, ay=1. / a)

    # add pyramid list
    pyramid.append(p)
    
  return pyramid

# Read image
img = cv2.imread("../bird.png").astype(np.float)

gray = BGR2GRAY(img)

# pyramid
pyramid = make_pyramid(gray)

for i in range(6):
  cv2.imwrite("out_{}.jpg".format(2**i), pyramid[i].astype(np.uint8))
  plt.subplot(2, 3, i+1)
  plt.title('1/' + str((i+1)**2) )
  plt.imshow(pyramid[i], cmap='gray')
  plt.axis('off')
  plt.xticks(color="None")
  plt.yticks(color="None")

plt.show()

python实现图像高斯金字塔的示例代码

python实现图像高斯金字塔的示例代码

以上就是python实现图像高斯金字塔的示例代码的详细内容,更多关于python 图像高斯金字塔的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
删除目录下相同文件的python代码(逐级优化)
May 25 Python
深入解答关于Python的11道基本面试题
Apr 01 Python
Python基本socket通信控制操作示例
Jan 30 Python
使用python实现滑动验证码功能
Aug 05 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
python利用platform模块获取系统信息
Oct 09 Python
python音频处理的示例详解
Dec 23 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
Jan 28 Python
python如何正确使用yield
May 21 Python
教你利用python实现企业微信发送消息
May 23 Python
Pycharm plot独立窗口显示的操作
Dec 11 #Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 #Python
使用python操作lmdb对数据读取的实例
Dec 11 #Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 #Python
python中append函数用法讲解
Dec 11 #Python
python实现图像随机裁剪的示例代码
Dec 10 #Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 #Python
You might like
PHP的面试题集
2006/11/19 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
浅谈JavaScript的闭包函数
2016/12/08 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
ant design实现圈选功能
2019/12/17 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
关于Python中异常(Exception)的汇总
2017/01/18 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Python如何实现定时器功能
2020/05/28 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
经济与贸易专业应届生求职信
2013/11/19 职场文书
学校联谊活动方案
2014/02/15 职场文书
库房管理员岗位职责
2014/03/09 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
安全生产标语口号
2015/12/26 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
Java存储没有重复元素的数组
2022/04/29 Java/Android
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL