哈哈,題目取得這麼繞,其實就是本身寫了一個很渣的相似圖像放大的算法。已知矩陣四周的4點,擴展成更大的矩陣,中間的元素值均勻插入,例如:python
矩陣:算法
1 2spa
3 4code
擴展成3x3的:orm
1 1.5 2utf-8
2 2.5 3input
3 3.5 4class
不說廢話,直接上代碼:import
# -*- coding: utf-8 -*- """ 蔣方正二維插值算法。 """ import matplotlib import matplotlib.pyplot as plt import numpy as np from numpy import * # 一維插值 def yiweichazhi(inputmat): i = 0 for _ in inputmat: inputmat[i] = inputmat[0] + (inputmat[-1] - inputmat[0]) * i / (len(inputmat) - 1) i = i + 1 return inputmat # 畫僞彩色圖 def 僞彩色圖(zz): Row = zz.shape[0] Col = zz.shape[1] xx, yy = np.meshgrid(np.linspace(0, 10, Col), np.linspace(0, 10, Row)) # 圖像xy範圍和插值 cmap = matplotlib.cm.jet # 指定colormap plt.imshow(zz, origin='lower', extent=[xx.min(), xx.max(), yy.min(), yy.max()], cmap=cmap) # 僞彩色圖 plt.show() # 由角4點擴展爲插值大矩陣 def 蔣方正插值(a): # 擴張矩陣 10x10 pointRow = 100 # 插值點數-行 pointCol = 100 # 插值點數-行 aa = np.zeros([pointRow, pointCol], dtype=float) # 四周點直接賦值 aa[0][0] = a[0][0] aa[0][-1] = a[0][1] aa[-1][0] = a[1][0] aa[-1][-1] = a[1][1] # 四周先插值 aa[0] = yiweichazhi(aa[0]) aa[-1] = yiweichazhi(aa[-1]) aa[:, 0] = yiweichazhi(aa[:, 0]) aa[:, -1] = yiweichazhi(aa[:, -1]) # 所有插值 for i in range(len(aa)): aa[i] = yiweichazhi(aa[i]) i = i + 1 return aa # 未插值前4點矩陣 a = np.array([ [1, 2], [3, 4] ], dtype=float) aa = 蔣方正插值(a) # 打印aa print(aa, "\n") # 畫圖 僞彩色圖(aa)