python数字图像处理实现图像的形变与缩放


Posted in Python onJune 28, 2022

skimage的transform模块

图像的形变与缩放,使用的是skimage的transform模块,函数比较多,功能齐全。

1、改变图片尺寸resize

函数格式为:

skimage.transform.resize(image,output_shape)

image: 需要改变尺寸的图片

output_shape: 新的图片尺寸

from skimage import transform,data
import matplotlib.pyplot as plt
img = data.camera()
dst=transform.resize(img, (80, 60))
plt.figure('resize')
plt.subplot(121)
plt.title('before resize')
plt.imshow(img,plt.cm.gray)
plt.subplot(122)
plt.title('before resize')
plt.imshow(dst,plt.cm.gray)
plt.show()

将camera图片由原来的512*512大小,变成了80*60大小。从下图中的坐标尺,我们能够看出来:

python数字图像处理实现图像的形变与缩放

2、按比例缩放rescale

函数格式为:

skimage.transform.rescale(image,scale[,...])

scale参数可以是单个float数,表示缩放的倍数,也可以是一个float型的tuple,如[0.2,0.5],表示将行列数分开进行缩放

from skimage import transform,data
img = data.camera()
print(img.shape)  #图片原始大小 
print(transform.rescale(img, 0.1).shape)  #缩小为原来图片大小的0.1倍
print(transform.rescale(img, [0.5,0.25]).shape)  #缩小为原来图片行数一半,列数四分之一
print(transform.rescale(img, 2).shape)   #放大为原来图片大小的2倍

结果为:

(512, 512)
(51, 51)
(256, 128)
(1024, 1024)

3、旋转 rotate

skimage.transform.rotate(image,angle[,...],resize=False)

angle参数是个float类型数,表示旋转的度数

resize用于控制在旋转时,是否改变大小 ,默认为False

from skimage import transform,data
import matplotlib.pyplot as plt
img = data.camera()
print(img.shape)  #图片原始大小
img1=transform.rotate(img, 60) #旋转90度,不改变大小 
print(img1.shape)
img2=transform.rotate(img, 30,resize=True)  #旋转30度,同时改变大小
print(img2.shape)   
plt.figure('resize')
plt.subplot(121)
plt.title('rotate 60')
plt.imshow(img1,plt.cm.gray)
plt.subplot(122)
plt.title('rotate  30')
plt.imshow(img2,plt.cm.gray)
plt.show()

显示结果:

python数字图像处理实现图像的形变与缩放

4、图像金字塔

以多分辨率来解释图像的一种有效但概念简单的结构就是图像金字塔。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低的图像集合。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。当向金字塔的上层移动时,尺寸和分辨率就降低。

在此,我们举一个高斯金字塔的应用实例,函数原型为:

skimage.transform.pyramid_gaussian(image, downscale=2)

downscale控制着金字塔的缩放比例

import numpy as np
import matplotlib.pyplot as plt
from skimage import data,transform
image = data.astronaut()  #载入宇航员图片
rows, cols, dim = image.shape  #获取图片的行数,列数和通道数
pyramid = tuple(transform.pyramid_gaussian(image, downscale=2))  #产生高斯金字塔图像
#共生成了log(512)=9幅金字塔图像,加上原始图像共10幅,pyramid[0]-pyramid[1]
composite_image = np.ones((rows, cols + cols / 2, 3), dtype=np.double)  #生成背景
composite_image[:rows, :cols, :] = pyramid[0]  #融合原始图像
i_row = 0
for p in pyramid[1:]:
    n_rows, n_cols = p.shape[:2]
    composite_image[i_row:i_row + n_rows, cols:cols + n_cols] = p  #循环融合9幅金字塔图像
    i_row += n_rows
plt.imshow(composite_image)
plt.show()

python数字图像处理实现图像的形变与缩放

python数字图像处理实现图像的形变与缩放

上图,就是10张金字塔图像,下标为0的表示原始图像,后面每层的图像行和列变为上一层的一半,直至变为1

除了高斯金字塔外,还有其它的金字塔,如:

skimage.transform.pyramid_laplacian(image, downscale=2):

python数字图像处理实现图像的形变与缩放

以上就是python数字图像处理实现图像的形变与缩放的详细内容,更多关于python数字图像形变与缩放的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python生成验证码实例
Aug 21 Python
python3实现多线程聊天室
Dec 12 Python
浅析python的Lambda表达式
Feb 27 Python
Python使用python-docx读写word文档
Aug 26 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
python文件处理fileinput使用方法详解
Jan 02 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 Python
Python错误的处理方法
Jun 23 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
You might like
php像数组一样存取和修改字符串字符
2014/03/21 PHP
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python实现购物程序思路及代码
2017/07/24 Python
python3爬取各类天气信息
2018/02/24 Python
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
django解决订单并发问题【推荐】
2019/07/31 Python
Python数据库小程序源代码
2019/09/15 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
运动会入场口号
2014/06/07 职场文书
护士实习求职信
2014/06/22 职场文书
介绍信样本
2015/01/31 职场文书
早上好问候语大全
2015/11/10 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
MyBatis 动态SQL全面详解
2021/10/05 MySQL
nginx配置指令之server_name的具体使用
2022/08/14 Servers