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的ORM框架SQLAlchemy入门教程
Apr 28 Python
python获取本地计算机名字的方法
Apr 29 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
Python 编码处理-str与Unicode的区别
Sep 06 Python
python中virtualenvwrapper安装与使用
May 20 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
Python批处理删除和重命名文件夹的实例
Jul 11 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 Python
python 变量初始化空列表的例子
Nov 28 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
使用Python解决图表与画布的间距问题
Apr 11 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/10/09 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
PHP解决中文乱码
2017/04/28 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
js 页面元素的几个用法总结
2013/11/18 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
js实现文字滚动效果
2016/03/03 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
python获得一个月有多少天的方法
2015/06/04 Python
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
python skimage 连通性区域检测方法
2018/06/21 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
keras 权重保存和权重载入方式
2020/05/21 Python
世界上最大的二手相机店:KEN
2017/05/17 全球购物
电脑租赁公司创业计划书
2014/01/08 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
解析MySQL索引的作用
2022/03/03 MySQL
idea下配置tomcat避坑详解
2022/04/12 Servers
springboot实现string转json json里面带数组
2022/06/16 Java/Android