小編寫這篇文章的主要目的,主要是給大家介紹關(guān)于Python的一些事宜,比如會涉及到圖像處理相關(guān)的問題,比如會涉及到相關(guān)的圖像的形變與縮放,那么,遇到這種問題的話,具體要怎么操作呢?下面就給大家詳細(xì)解答下。
skimage的transform模塊
圖形的放大與縮小,應(yīng)用到的技術(shù)是skimage的transform模塊,函數(shù)比較多,功能齊全。
1、改變圖片尺寸resize
函數(shù)格式為:
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大小。從下圖中的坐標(biāo)尺,我們能夠看出來:
2、按比例縮放rescale
函數(shù)格式為:
skimage.transform.rescale(image,scale[,...])
scale參數(shù)可以是單個float數(shù),表示縮放的倍數(shù),也可以是一個float型的tuple,如[0.2,0.5],表示將行列數(shù)分開進(jìn)行縮放
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)#縮小為原來圖片行數(shù)一半,列數(shù)四分之一 print(transform.rescale(img,2).shape)#放大為原來圖片大小的2倍
結(jié)果為:
(512,512)
(51,51)
(256,128)
(1024,1024)
3、旋轉(zhuǎn)rotate
skimage.transform.rotate(image,angle[,...],resize=False)
angle參數(shù)是個float類型數(shù),表示旋轉(zhuǎn)的度數(shù)
resize用于控制在旋轉(zhuǎn)時,是否改變大小,默認(rèn)為False
from skimage import transform,data import matplotlib.pyplot as plt img=data.camera() print(img.shape)#圖片原始大小 img1=transform.rotate(img,60)#旋轉(zhuǎn)90度,不改變大小 print(img1.shape) img2=transform.rotate(img,30,resize=True)#旋轉(zhuǎn)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()
顯示結(jié)果:
4、圖像金字塔
以多分辨率來解釋圖像的一種有效但概念簡單的結(jié)構(gòu)就是圖像金字塔。圖像金字塔最初用于機(jī)器視覺和圖像壓縮,一幅圖像的金字塔是一系列以金字塔形狀排列的分辨率逐步降低的圖像集合。金字塔的底部是待處理圖像的高分辨率表示,而頂部是低分辨率的近似。當(dāng)向金字塔的上層移動時,尺寸和分辨率就降低。
在此,我們舉一個高斯金字塔的應(yīng)用實例,函數(shù)原型為:
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#獲取圖片的行數(shù),列數(shù)和通道數(shù) pyramid=tuple(transform.pyramid_gaussian(image,downscale=2))#產(chǎn)生高斯金字塔圖像 #共生成了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#循環(huán)融合9幅金字塔圖像 i_row+=n_rows plt.imshow(composite_image) plt.show()
上圖,就是10張金字塔圖像,下標(biāo)為0的表示原始圖像,后面每層的圖像行和列變?yōu)樯弦粚拥囊话?,直至變?yōu)?
除了高斯金字塔外,還有其它的金字塔,如:
skimage.transform.pyramid_laplacian(image,downscale=2):
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/128826.html
摘要:計算機(jī)圖形學(xué)中的應(yīng)用非常廣泛的變換是一種稱為仿射變換的特殊變換,在仿射變換中的基本變換包括平移旋轉(zhuǎn)縮放剪切這幾種。表示縮小,表示放大錯切圖像錯切變換在圖像幾何形變方面非常有用,常見的錯切變換分為方向與方向的錯切變換。 二維圖形學(xué)的變換 使用過前端的css3,canva,svg的小伙伴應(yīng)該對平移,旋轉(zhuǎn),縮放,剪切這些效果變換應(yīng)該很熟悉了,但應(yīng)該大部分小伙伴應(yīng)該不清楚其中的原理,在二維圖形...
閱讀 923·2023-01-14 11:38
閱讀 895·2023-01-14 11:04
閱讀 756·2023-01-14 10:48
閱讀 2055·2023-01-14 10:34
閱讀 961·2023-01-14 10:24
閱讀 840·2023-01-14 10:18
閱讀 510·2023-01-14 10:09
閱讀 588·2023-01-14 10:02