亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

引言:

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

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

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

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

1、最近鄰插值算法思想

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

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

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

通過上式變形,得到目標圖像的像素點和原始圖像的像素點映射如下:

tar_x = src_x/ratio_H
tar_y = src_y/ratio_W

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

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

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

有了前面的理論分析就很容易實現(xiàn)了,自己實現(xiàn)中比較難理解的地方就是“坐標變換關(guān)系”!如果是將原始圖像放大整數(shù)倍很容易理解,比如一張原始10x10圖像放大到目標20x20圖像,那么20x20圖像中的任一個像素點(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)建目標圖像
? ? target_image = np.zeros(shape=(*target_size, 3))
? ? # 2:計算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:計算目標圖像人任一像素點
? ? ? ? ? ? # target_image[tar_x,tar_y]需要從原始圖像
? ? ? ? ? ? # 的哪個確定的像素點image[src_x, xrc_y]取值
? ? ? ? ? ? # 也就是計算坐標的映射關(guān)系
? ? ? ? ? ? src_x = round(tar_x/alpha_h)
? ? ? ? ? ? src_y = round(tar_y/alpha_w)

? ? ? ? ? ? # 4:對目標圖像的任一像素點賦值
? ? ? ? ? ? target_image[tar_x, tar_y] = image[src_x, src_y]

? ? return target_image

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Python寫入CSV文件的方法

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

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

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

    python if not in 多條件判斷代碼

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

最新評論