最近相鄰插值

2021-09-11 06:10:53 字數 2171 閱讀 5881

使用最近鄰插值:

源(simg)=目標(dimg)*縮放係數(k),

縮放係數k = 源尺寸/目標

由上,對分x、y軸 :sx = dx*k sy = dy *k 

思路:初始化目標size的,然後根據位置計算目標對應於原的位置索引,索引結果四捨五入

也就是說目標的每個畫素都是根據目標的畫素索引*縮放係數後求得目標對應其在源上的索引位置,索引結果四捨五入

最近鄰插值也就是目標的每個畫素依賴於源的畫素值通過縮放係數計算得到的索引,並索引源的畫素值來填充

1 import matplotlib.pyplot as plt

2 import numpy as np

3 4 img = plt.imread('source.bmp')

5 6 def nearest_interploat(img,dsize):

7 """

8 對單通道的進行縮放處理

12 也就是說目標的每個畫素都是根據目標的畫素索引*縮放係數後求得目標對應其在源上的索引位置,索引結果四捨五入

13 最近鄰插值也就是目標的每個畫素依賴於源的畫素值通過縮放係數計算得到的索引,並索引源的畫素值來填充

14 :param img: 源

15 :param dsize: 目標尺寸

16 :return: 目標

17 """

18 19 dimg = np.zeros((dsize),dtype=int) #初始化目標

20 ssize_x,ssize_y = img.shape

21 plt.imshow(dimg)

22 plt.show()

23 #下面將dsize分開處理為x的縮放係數與y的縮放係數是因為影象的高寬可能不一致

24 xk = (ssize_x/dsize[0])

25 yk = (ssize_y/dsize[1])

26 27 # np.argwhere(dimg!=none)返回目標的畫素索引 shape=(dsize_x*disze_y,2)因為每個畫素點都有x,y兩個索引

28 pixel_index=np.argwhere(dimg!=none) #返回的索引每個畫素點[行,列]畫素點從行到列

29 30

31 d_ssize_x = pixel_index[:,0]*xk

32 33 d_ssize_y = pixel_index[:,1] *xk

34 35

36 d_ssize_x = np.around(d_ssize_x) #四捨五入

37 d_ssize_y = np.around(d_ssize_y)

38 39

40 d_ssize_x=d_ssize_x.astype('int')

41 d_ssize_y=d_ssize_y.astype('int')

42 43 d_ssize_x[np.nonzero(d_ssize_x==ssize_x)[0]] = ssize_x-1 #索引不得超過size-1

44 d_ssize_y[np.nonzero(d_ssize_y==ssize_y)[0]] = ssize_y-1

45 46 print(d_ssize_x[np.nonzero(d_ssize_x>ssize_x)[0]])

47 dimg = img[d_ssize_x,d_ssize_y]

48 dimg = np.resize(dimg,dsize)

49 print(img.shape)

50 plt.imshow(img)

51 plt.show()

52 53 plt.imshow(dimg)

54 plt.show()

55 56

57 58

59 60 if __name__ == '__main__':

61 c =50

62 nearest_interploat(img[:,:,2],(176*c,197*c))

63 a = np.random.rand(2,3)

最近鄰插值

使用最近鄰插值 源 simg 目標 dimg 縮放係數 k 縮放係數k 源尺寸 目標 由上,對分x y軸 sx dx k sy dy k 思路 初始化目標size的,然後根據位置計算目標對應於原的位置索引,索引結果四捨五入 也就是說目標的每個畫素都是根據目標的畫素索引 縮放係數後求得目標對應其在源上...

最近鄰插值 雙線性插值

最近鄰插值 公式如下 最近鄰插值 輸入 src 輸入源圖 dst rows 目標圖的行數 dst cols 目標圖的列數 輸出 目標圖 mat neargest neighbor mat src,int dst rows,int dst cols return dst 雙線性插值 公式如下 雙線性插...

K 最近相鄰(2)

k 最近鄰演算法的一大缺陷是 維度危機 curse of dimensionality 當有大量不相干的屬性存在時,近鄰間的距離會被大量的不相關屬性所支配。比如,在資料集方面。在 k 最近相鄰 1 中的資料集是單一的,值域範圍相同的,且對結果有著同樣影響力的 但可能實際的資料集比之更為複雜。例如 可...