欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)圖像最近鄰插值

 更新時(shí)間:2022年03月10日 10:11:31   作者:機(jī)器學(xué)習(xí)入坑者  
這篇文章主要介紹了python實(shí)現(xiàn)圖像最近鄰插值,圖像插值技術(shù)即Nearest?Neighbour?Interpolate是圖像超分辨率領(lǐng)域的重要研究方法之一,其目的是根據(jù)已有的低分辨率圖像,獲得高分辨率圖像,下面來看看文章具體的敘述,需要的朋友可以參考一下

引言:

最近鄰插值Nearest Neighbour Interpolate算法是圖像處理中普遍使用的圖像尺寸縮放算法,由于其實(shí)現(xiàn)簡單計(jì)算速度快的特性深受工程師們的喜愛。

圖像插值技術(shù)是圖像超分辨率領(lǐng)域的重要研究方法之一,其目的是根據(jù)已有的低分辨率圖像(Low Resolution,LR)獲得高分辨率圖像(High Resolution,HR)。

本文一方面對最鄰近插值算法的流程進(jìn)行分析,另一方面借助python實(shí)現(xiàn)基本的最近鄰插值算法。

注:網(wǎng)上的資料有的翻譯是“近鄰”,也有的翻譯是“臨近”。

1、最近鄰插值算法思想

插值的目的是根據(jù)已知的圖像的像素值獲得未知目標(biāo)圖像的像素值,插值變換過程如下圖(PPT畫的背景沒去除)所示:

其中src表示原始圖像,tar表示插值得到的目標(biāo)圖像,H和W分別表示圖像的高度和寬度。插值的核心是找到(tar_x, tar_y)和(src_x, src_y)的映射關(guān)系,從而實(shí)現(xiàn)對目標(biāo)圖像的每一個(gè)像素點(diǎn)進(jìn)行賦值。假設(shè)目的是將原始圖像長度和寬度擴(kuò)大(3,4)倍,即:

ratio_H = tar_H/src_H = tar_x/src_x = 3
ratio_W = tar_W/src_W = tar_y/src_y = 4

通過上式變形,得到目標(biāo)圖像的像素點(diǎn)和原始圖像的像素點(diǎn)映射如下:

tar_x = src_x/ratio_H
tar_y = src_y/ratio_W

知道了像素點(diǎn)之間的映射關(guān)系,實(shí)現(xiàn)算法就很容易了,算法流程如下:

  • (1)根據(jù)tar_H和tar_W創(chuàng)建目標(biāo)圖像
  • (2)計(jì)算縮放比例因子ratio
  • (3)遍歷目標(biāo)圖像每個(gè)像素點(diǎn),計(jì)算映射關(guān)系
  • (4)遍歷目標(biāo)圖像每個(gè)像素點(diǎn),使用對應(yīng)原始圖像的對應(yīng)像素點(diǎn)對其賦值

2、python實(shí)現(xiàn)最鄰近插值

有了前面的理論分析就很容易實(shí)現(xiàn)了,自己實(shí)現(xiàn)中比較難理解的地方就是“坐標(biāo)變換關(guān)系”!如果是將原始圖像放大整數(shù)倍很容易理解,比如一張?jiān)?0x10圖像放大到目標(biāo)20x20圖像,那么20x20圖像中的任一個(gè)像素點(diǎn)(tar_x,tar_y)的值來自原始10x10圖像的(src_x,src_y)=int(tar_x/2, tar_y/2),也就是正好是除以2的位置;然而經(jīng)常需要放大的倍數(shù)是小數(shù)倍,比如將10x10放大到15x15,這樣(tar_x,tar_y)的值來自10x10圖像中(src_x, src_y)=int(tar_x/1.5, tar_y/1.5)。

代碼如下:

def nearest(image, target_size):
? ? """
? ? Nearest Neighbour interpolate for RGB ?image
? ??
? ? :param image: rgb image
? ? :param target_size: tuple = (height, width)
? ? :return: None
? ? """
? ? if target_size[0] < image.shape[0] or target_size[1] < image.shape[1]:
? ? ? ? raise ValueError("target image must bigger than input image")
? ? # 1:按照尺寸創(chuàng)建目標(biāo)圖像
? ? target_image = np.zeros(shape=(*target_size, 3))
? ? # 2:計(jì)算height和width的縮放因子
? ? alpha_h = target_size[0]/image.shape[0]
? ? alpha_w = target_size[1]/image.shape[1]

? ? for tar_x in range(target_image.shape[0]-1):
? ? ? ? for tar_y in range(target_image.shape[1]-1):
? ? ? ? ? ? # 3:計(jì)算目標(biāo)圖像人任一像素點(diǎn)
? ? ? ? ? ? # target_image[tar_x,tar_y]需要從原始圖像
? ? ? ? ? ? # 的哪個(gè)確定的像素點(diǎn)image[src_x, xrc_y]取值
? ? ? ? ? ? # 也就是計(jì)算坐標(biāo)的映射關(guān)系
? ? ? ? ? ? src_x = round(tar_x/alpha_h)
? ? ? ? ? ? src_y = round(tar_y/alpha_w)

? ? ? ? ? ? # 4:對目標(biāo)圖像的任一像素點(diǎn)賦值
? ? ? ? ? ? target_image[tar_x, tar_y] = image[src_x, src_y]

? ? return target_image

得到的插值結(jié)果的插值結(jié)果如下:

可以看出插值以后的圖像明顯存在鋸齒效應(yīng),很多地方出現(xiàn)了“方格”。

到此這篇關(guān)于python實(shí)現(xiàn)圖像最近鄰插值的文章就介紹到這了,更多相關(guān)python圖像鄰插值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Python編寫一個(gè)語音合成系統(tǒng)

    基于Python編寫一個(gè)語音合成系統(tǒng)

    這篇文章主要介紹了如何利用Python制作一個(gè)語音合成系統(tǒng),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,感興趣的小伙伴可以了解一下
    2022-03-03
  • ?分享一個(gè)Python?遇到數(shù)據(jù)庫超好用的模塊

    ?分享一個(gè)Python?遇到數(shù)據(jù)庫超好用的模塊

    這篇文章主要介紹了?分享一個(gè)Python?遇到數(shù)據(jù)庫超好用的模塊,SQLALchemy這個(gè)模塊,該模塊是Python當(dāng)中最有名的ORM框架,該框架是建立在數(shù)據(jù)庫API之上,使用關(guān)系對象映射進(jìn)行數(shù)據(jù)庫的操作,,需要的朋友可以參考下
    2022-04-04
  • Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式

    Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式

    這篇文章主要介紹了Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式,然后介紹了另外一個(gè)相關(guān)實(shí)例,具體內(nèi)容請參閱正文,需要的朋友可以參考下。
    2017-11-11
  • Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例

    Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例

    這篇文章主要介紹了Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下
    2016-02-02
  • python用10行代碼實(shí)現(xiàn)對黃色圖片的檢測功能

    python用10行代碼實(shí)現(xiàn)對黃色圖片的檢測功能

    這篇文章主要介紹了python用10行代碼實(shí)現(xiàn)對黃色圖片的檢測功能,涉及Python基于圖片庫PIL對圖片的檢測技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • python 多線程死鎖問題的解決方案

    python 多線程死鎖問題的解決方案

    這篇文章主要介紹了python 多線程死鎖問題的解決方案,幫助大家更好的理解和學(xué)習(xí)python 鎖,感興趣的朋友可以了解下
    2020-08-08
  • Python發(fā)起請求提示UnicodeEncodeError錯(cuò)誤代碼解決方法

    Python發(fā)起請求提示UnicodeEncodeError錯(cuò)誤代碼解決方法

    這篇文章主要介紹了Python發(fā)起請求提示UnicodeEncodeError錯(cuò)誤代碼解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python寫入CSV文件的方法

    Python寫入CSV文件的方法

    這篇文章主要介紹了Python寫入CSV文件的方法,涉及Python使用csv模塊操作csv文件讀寫的相關(guān)技巧,非常簡單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • Tensorflow之梯度裁剪的實(shí)現(xiàn)示例

    Tensorflow之梯度裁剪的實(shí)現(xiàn)示例

    這篇文章主要介紹了Tensorflow之梯度裁剪的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python if not in 多條件判斷代碼

    python if not in 多條件判斷代碼

    學(xué)了一段時(shí)間python,發(fā)現(xiàn)有時(shí)遇到多條件判斷的時(shí)候,覺得使用單純的in的話比較麻煩,需要多個(gè)條件,今天又遇到一個(gè),網(wǎng)上搜索了一下,也有同學(xué)和我遇到相同的問題,記錄一下
    2016-09-09

最新評論