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中的文本处理
Apr 11 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
Python制作简易注册登录系统
Dec 15 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
用python批量解压带密码的压缩包
May 31 Python
使用numpy实现矩阵的翻转(flip)与旋转
Jun 03 Python
python 离散点图画法的实现
Apr 01 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对XML的操作详解
2013/06/07 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
js变换显示图片的实例
2013/04/16 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
自己使用总结Python程序代码片段
2015/06/02 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python 处理文件的几种方式
2019/08/23 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
工商企业管理应届生求职信
2013/11/03 职场文书
我爱读书演讲稿
2014/05/07 职场文书
企业总经理任命书
2014/06/05 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
2015年公司新年寄语
2014/12/08 职场文书
frg-100简单操作(设置)说明
2022/04/05 无线电
搭建Yolov5服务器
2022/04/30 Servers