一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

計算機(jī)視覺(五)雙三次插值(Bicubic Interpolation)算法介紹及opencv和matlab的代碼實現(xiàn)及區(qū)別

 jatxl3 2021-03-26

超分辨率基礎(chǔ)_插值算法簡介

1.插值算法

數(shù)學(xué)的數(shù)值分析領(lǐng)域中,內(nèi)插或稱插值(英語:interpolation)是一種通過已知的、離散的數(shù)據(jù)點,在范圍內(nèi)推求新數(shù)據(jù)點的過程或方法。常見的三種插值算法為最近鄰插值、雙線性插值和雙三次插值。

一組離散數(shù)據(jù)點在一個外延的插值。曲線中實際已知數(shù)據(jù)點是紅色的;連接它們的藍(lán)色曲線即為插值。

2.最近鄰插值算法

最鄰插值算法(Nearest Neighbor interpolation)是最簡單的一種插值算法,當(dāng)圖片放大時,缺少的像素通過直接使用與之最近原有像素生成,原理就是選取距離插入的像素點(x+u, y+v)【注:x,y為整數(shù), u,v為小數(shù)】最近的一個像素點,用它的像素點的灰度值代替插入的像素點。

i+u, j+v為待求像素坐標(biāo),如果 i+u, j+v落在A區(qū),即 u<0.5,v<0.5,則將左上角像素的灰度值賦給待求像素,同理落在B區(qū)則賦予右上角的像素灰度值,落在C區(qū)則賦予左下角像素的灰度值,落在D區(qū)則賦予右下角像素的灰度值。

最近鄰插值法計算量較小,但可能會造成生的圖像灰度上的不連續(xù),在變化地方可能出現(xiàn)明顯鋸齒狀。

3.雙線性插值算法


在數(shù)學(xué)上,雙線性插值是有兩個變量的插值函數(shù)的線形插值擴(kuò)展,其核心思想是在兩個方向分別進(jìn)行一次線性插值。

 

 

以上是一維的,接下來看看二維中的雙線性插值

首先在x方向上面線性插值,得到R2、R1

 

然后以R2,R1在y方向上面再次線性插值

 

如果選擇一個坐標(biāo)系統(tǒng)使得 f 的四個已知點坐標(biāo)分別為 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),那么插值公式就可以化簡為

用矩陣表示

 

雙線性內(nèi)插法的計算比最鄰近點法復(fù)雜,計算量較大但沒有灰度不連續(xù)的缺點,結(jié)果基本令人滿意。它具有低通濾波性質(zhì),使高頻分量受損,圖像輪廓可能會有一點模糊。

4.雙三次插值算法(bicubic interpolation)

在數(shù)值分析這個數(shù)學(xué)分支中,雙三次插值(英語:Bicubic interpolation)是二維空間中最常用的插值方法。在這種方法中,函數(shù) f 在點 (x, y) 的值可以通過矩形網(wǎng)格中最近的十六個采樣點的加權(quán)平均得到,在這里需要使用兩個多項式插值三次函數(shù),每個方向使用一個

雙三次插值計算公式

 

那么這個a(i, j)便是介紹里面所說的加權(quán)系數(shù)了,所以關(guān)鍵是要把它求解出來。

求解加權(quán)系數(shù)的公式如下

相關(guān)論文

在這里插入圖片描述


有適當(dāng)?shù)倪吔鐥l件(boundary condition)和約束插值內(nèi)核(constrains on the interpolation kernel)的時候,立方卷積是更好方式,并給出了這個式子:

在這里插入圖片描述

當(dāng)a=-0.5時比較合適

在這里插入圖片描述

在這里插入圖片描述


keys說rifman和bernstein給了他用這個模型的勇氣,

在這里插入圖片描述

bernstein說是riffman提出用sinx/x近似,啊哈就算這是源頭吧。。但是還差個pi

在這里插入圖片描述

 

在這里插入圖片描述

keys又說hou那他得到了啟發(fā),嗯,搜了一下果然。。難道說這個歐米茄就是pi?

在這里插入圖片描述

在這里插入圖片描述

額,它不是。那大概認(rèn)為大家都覺得乘上pi比較合適吧。
效果是這樣的。

雙三次曲線插值方法計算量較大,但后的圖像效果最好。

5.代碼實現(xiàn)

opencv

  1. import cv2 as cv
  2. img = cv.imread('automobile.png')
  3. # 放大圖像,雙三次插值
  4. enlarge = cv.resize(img, (0, 0), fx=4, fy=4, interpolation=cv.INTER_CUBIC)
  5. cv.imshow("Image", enlarge)
  6. cv.waitKey (0)
  7. cv.destroyAllWindows()

matlab 

  1. import cv2
  2. from matplotlib import pyplot as plt
  3. img = cv2.imread('yosemeti.jpg',0)
  4. plt.imshow(img,cmap='gray', interpolation='bicubic')
  5. plt.show()

6.區(qū)別

opencv和matlab的bicubic算法有什么區(qū)別?

 

來自Matlab的文檔:

'bicubic':雙立方插值(默認(rèn)值);輸出像素值是最近的4乘4鄰域中像素的加權(quán)平均值。

來自OpenCV的文檔:

INTER_CUBIC - 4x4像素鄰域的雙三次插值。

 

所以對此的唯一解釋是他們使用不同的加權(quán)策略來獲得平均值。

來自Matlab imresize.m source,您可以找到內(nèi)核常量A (請參閱維基百科上的雙立方插值)設(shè)置為 -0.5 ,而在OpenCV中設(shè)置為 -0.75 (請參閱imgproc/src/imgwarp.cpp,函數(shù)interpolateCubic()在github上)。這為卷積提供了不同的內(nèi)核形狀,因此最終插值圖像的結(jié)果會略有不同。

參考

https://blog.csdn.net/nandina179/article/details/85330552

https://www.jianshu.com/p/8118e708b766

opencv和matlab的bicubic算法有什么區(qū)別?

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    激情五月天免费在线观看| 免费特黄一级一区二区三区| 欧美精品在线播放一区二区| 亚洲男人的天堂久久a| 麻豆视传媒短视频在线看| 国产精品不卡一区二区三区四区| 国产一区国产二区在线视频| 欧美一级黄片免费视频| 麻豆在线观看一区二区| 国产精品一区二区三区日韩av | 国产av精品高清一区二区三区| 日韩1区二区三区麻豆| 色婷婷在线视频免费播放| 国产视频在线一区二区| 国产视频一区二区三区四区| 免费精品一区二区三区| 日本最新不卡免费一区二区| 日韩av欧美中文字幕| 福利专区 久久精品午夜| 色婷婷成人精品综合一区| 日本丁香婷婷欧美激情| 91精品国产综合久久不卡| 亚洲成人黄色一级大片| 国产精品超碰在线观看| 国产免费操美女逼视频| 插进她的身体里在线观看骚| 久久精品国产熟女精品| 国产成人免费激情视频| 色婷婷成人精品综合一区| 欧美成人精品一区二区久久| 青青免费操手机在线视频| 亚洲黄香蕉视频免费看| 亚洲精品成人福利在线| 精品一区二区三区三级视频 | 色一情一乱一区二区三区码| 黄男女激情一区二区三区| 国产午夜在线精品视频| 99久久精品免费精品国产| 中文字幕精品少妇人妻| 九九热在线视频精品免费| 精品人妻一区二区三区免费|