最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python進(jìn)行圖像變換和插值操作詳解

 更新時(shí)間:2024年02月29日 11:23:09   作者:微小冷  
這篇文章主要為大家詳細(xì)介紹了Python進(jìn)行圖像變換和插值操作的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

圖像變換

盡管numpy提供了一些矩陣函數(shù),但圖像處理是一個(gè)十分浩瀚的領(lǐng)域,numpy的體量顯然有些不夠。相比之下,【scipy】封裝了【ndimage】模塊,即專用的多維數(shù)組處理模塊,自然也涵蓋了二維圖像的處理。

ndimage中提供了對數(shù)組進(jìn)行平移、縮放以及旋轉(zhuǎn)操作的函數(shù),分別是shift, zoom, rotate,可以實(shí)現(xiàn)下面的變換效果

import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import *
from scipy.misc import face
img = face()

imDct = {
    "original": img,
    "shift" : shift(img, [50, 50, 0]),
    "zoom" : zoom(img, [1.5, 2, 1]),
    "rotate" : rotate(img, 15, axes=(1,0))
}

fig = plt.figure()
for i, key in enumerate(imDct):
    fig.add_subplot(2,2,i+1)
    plt.imshow(imDct[key])
    plt.title(key)
    plt.axis('off')

plt.show()

除了輸入圖像外,平移和縮放均有一個(gè)參數(shù),表示圖像數(shù)據(jù)的三個(gè)坐標(biāo)軸寬、高、通道的平移與縮放情況;旋轉(zhuǎn)有兩個(gè)參數(shù),分別表示旋轉(zhuǎn)角度和旋轉(zhuǎn)軸。

這些變換都是通過插值來實(shí)現(xiàn)的,通過參數(shù)order可以指定幾何變換的插值次數(shù),參數(shù)prefilter若設(shè)為為True,則會在插值前進(jìn)行樣條濾波。

從上圖可知,當(dāng)平移和旋轉(zhuǎn)在對原數(shù)組進(jìn)行操作后,空出來的區(qū)域會被填補(bǔ)為黑色,這由兩個(gè)參數(shù)決定,參數(shù)mode用于指定填充方法,默認(rèn)為constant模式,在此模式下,會用某個(gè)常數(shù)來填充空余區(qū)域,這個(gè)數(shù)值由參數(shù)cval指定。

填充模式

設(shè)數(shù)組中的值為a b c d,當(dāng)mode參數(shù)取不同的模式時(shí),其填充方法如下

reflect/grid-mirror 反射取點(diǎn)【d c b a | a b c d | d c b a】

mirror 反射取點(diǎn),不包括邊緣點(diǎn) 【d c b | a b c d | c b a】

constant/grid-constant 添加常數(shù)k【k k k k | a b c d | k k k k】

grid-constant 【k k k k | a b c d | k k k k】

nearest 就近取點(diǎn) 【a a a a | a b c d | d d d d】

grid-wrap 循環(huán)處理 【a b c d | a b c d | a b c d】

wrap 循環(huán)處理,不包括邊緣點(diǎn)【d b c d | a b c d | b c a b】

下面以旋轉(zhuǎn)為例,進(jìn)一步對比不同mode下的變換效果,旋轉(zhuǎn)函數(shù)中有一個(gè)axes參數(shù),表示旋轉(zhuǎn)所在的坐標(biāo)平面。

imDct = {
    "mirror" : rotate(img, 15, axes=(1,0), mode='mirror'),
    "reflect" : rotate(img, 30, axes=(1,0), mode='reflect'),
    "nearest" : rotate(img, 45, axes=(1,0), mode='nearest'),
}
fig = plt.figure()
for i, key in enumerate(imDct):
    fig.add_subplot(1,3,i+1)
    plt.imshow(imDct[key])
    plt.title(key)
    plt.axis('off')


plt.show()

效果如下

圖像插值

由于數(shù)組本身是格點(diǎn)化了的,所以對數(shù)組的旋轉(zhuǎn)、平移和縮放,并不像實(shí)數(shù)空間中那么簡單。以一維的平移為例,現(xiàn)有三個(gè)點(diǎn),坐標(biāo)為0,1,2,值對應(yīng)為a,b,c,現(xiàn)在將這個(gè)數(shù)軸向右平移0.5,則這a,b,c三個(gè)點(diǎn)的坐標(biāo)就變成了0.5,1.5,2.5,但數(shù)組中不允許出現(xiàn)非整數(shù)的坐標(biāo),所以顯示的仍然是0,1,2位置處的值,所以就需要通過0.5,1.5,2.5位置處的值,來插值得到0,1,2位置處的值。

幾何變換中所用到的插值方法,就是樣條插值,而樣條插值的核心步驟,是根據(jù)臨近點(diǎn)做數(shù)據(jù)擬合,擬合時(shí)最重要的參數(shù)就是階數(shù),這也是旋轉(zhuǎn)、縮放等操作中order參數(shù)的源頭。

在【ndimage】中,提供了一維樣條插值和多維樣條插值函數(shù),分別是spline_filter1d和spline_filter,這兩個(gè)函數(shù)的參數(shù)也包括order和mode。而一維插值函數(shù)還有一個(gè)坐標(biāo)軸選項(xiàng),用以約定插值的方向,其差別如下。

繪圖代碼為

import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import *
ori = np.eye(20)
ori[10, :] = 1.0

fDct = {
    "ori" : ori,
    "axis_0" : spline_filter1d(ori, axis=0),
    "axis_1" : spline_filter1d(ori, axis=1),
    "multi axis, order=3" : spline_filter(ori, order=3),
    "multi axis, order=4" : spline_filter(ori, order=4),
    "multi axis, order=5" : spline_filter(ori, order=5)
}

fig = plt.figure()
for i, key in enumerate(fDct):
    fig.add_subplot(2, 3, i+1)
    plt.imshow(fDct[key], cmap='gray_r')
    plt.title(key)

plt.show()

到此這篇關(guān)于Python進(jìn)行圖像變換和插值操作詳解的文章就介紹到這了,更多相關(guān)Python圖像變換和插值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中try的使用方法詳解

    python中try的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于python中try使用的相關(guān)資料,try語句用于包含一段可能引發(fā)異常的代碼塊,并允許我們定義如何處理這些異常,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    這篇文章主要介紹了在windows下安裝Pycham2020軟件方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Django實(shí)現(xiàn)內(nèi)容緩存實(shí)例方法

    Django實(shí)現(xiàn)內(nèi)容緩存實(shí)例方法

    在本篇文章里小編給大家整理了關(guān)于Django實(shí)現(xiàn)內(nèi)容緩存實(shí)例方法,有需要的朋友們可以跟著學(xué)習(xí)下。
    2020-06-06
  • Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例

    Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例

    這篇文章主要介紹了Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python實(shí)現(xiàn)將json多行數(shù)據(jù)傳入到mysql中使用

    python實(shí)現(xiàn)將json多行數(shù)據(jù)傳入到mysql中使用

    這篇文章主要介紹了python實(shí)現(xiàn)將json多行數(shù)據(jù)傳入到mysql中使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • OpenCV-Python直方圖均衡化實(shí)現(xiàn)圖像去霧

    OpenCV-Python直方圖均衡化實(shí)現(xiàn)圖像去霧

    直方圖均衡化可以達(dá)到增強(qiáng)圖像顯示效果的目的。最常用的比如去霧。本文就來實(shí)現(xiàn)直方圖均衡化實(shí)現(xiàn)圖像去霧,感興趣的可以了解一下
    2021-06-06
  • Python實(shí)現(xiàn)Mysql全量數(shù)據(jù)同步的腳本分享

    Python實(shí)現(xiàn)Mysql全量數(shù)據(jù)同步的腳本分享

    這篇文章主要為大家詳細(xì)介紹了基于Python如何實(shí)現(xiàn)Mysql全量數(shù)據(jù)同步的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-06-06
  • python 使用建議與技巧分享(四)

    python 使用建議與技巧分享(四)

    這篇文章主要介紹了python的一些使用建議與技巧分享,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • Python+Requests+PyTest+Excel+Allure?接口自動化測試實(shí)戰(zhàn)

    Python+Requests+PyTest+Excel+Allure?接口自動化測試實(shí)戰(zhàn)

    本文主要介紹了Python+Requests+PyTest+Excel+Allure?接口自動化測試實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python使用requests庫爬取拉勾網(wǎng)招聘信息的實(shí)現(xiàn)

    python使用requests庫爬取拉勾網(wǎng)招聘信息的實(shí)現(xiàn)

    這篇文章主要介紹了python使用requests庫爬取拉勾網(wǎng)招聘信息的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評論

镶黄旗| 塔城市| 车致| 焦作市| 曲周县| 高碑店市| 肥西县| 乌鲁木齐市| 铜鼓县| 满城县| 肃宁县| 东乌珠穆沁旗| 福州市| 乌拉特中旗| 和平县| 孝昌县| 三明市| 台中市| 合山市| 尚义县| 萨迦县| 都昌县| 房产| 云南省| 锡林浩特市| 石嘴山市| 柞水县| 瓦房店市| 安达市| 蒙山县| 玛沁县| 太康县| 贡嘎县| 巴里| 综艺| 卢氏县| 翁源县| 吉隆县| 吴忠市| 阜城县| 会宁县|