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服务器与android客户端socket通信实例
Nov 12 Python
Django基础之Model操作步骤(介绍)
May 27 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
Jun 27 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
DES加密解密算法之python实现版(图文并茂)
Dec 06 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 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
理解PHP5中static和const关键字的区别
2007/03/19 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
python查看zip包中文件及大小的方法
2015/07/09 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
购买一个高级域名:BuyDomains
2018/03/11 全球购物
护理毕业生自我鉴定
2014/02/11 职场文书
教学个人的自我评价分享
2014/02/16 职场文书
地球一小时倡议书
2014/04/15 职场文书
超市创业计划书
2014/09/15 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
2016年母亲节寄语
2015/12/04 职场文书
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL