成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python數(shù)字圖像處理實現(xiàn)圖像的形變與縮放

89542767 / 461人閱讀

  小編寫這篇文章的主要目的,主要是給大家介紹關(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)尺,我們能夠看出來:

01.png

  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é)果:

02.png

  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()

03.png

  上圖,就是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

相關(guān)文章

  • 【JS圖形學(xué)基礎(chǔ)】二維圖形學(xué)變換

    摘要:計算機(jī)圖形學(xué)中的應(yīng)用非常廣泛的變換是一種稱為仿射變換的特殊變換,在仿射變換中的基本變換包括平移旋轉(zhuǎn)縮放剪切這幾種。表示縮小,表示放大錯切圖像錯切變換在圖像幾何形變方面非常有用,常見的錯切變換分為方向與方向的錯切變換。 二維圖形學(xué)的變換 使用過前端的css3,canva,svg的小伙伴應(yīng)該對平移,旋轉(zhuǎn),縮放,剪切這些效果變換應(yīng)該很熟悉了,但應(yīng)該大部分小伙伴應(yīng)該不清楚其中的原理,在二維圖形...

    mozillazg 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<