คุณสามารถสอดแทรกเพื่อกำหนดความเบ้และสอดแทรกอีกครั้งเพื่อแก้ไขให้ถูกต้อง
import numpy as np
from scipy.ndimage.interpolation import map_coordinates
m, n = g.shape
j_shift = np.interp(g[:,0], g[0,:], np.arange(n))
pad = int(np.max(j_shift))
i, j = np.indices((m, n + pad))
z = map_coordinates(g, [i, j - j_shift[:,None]], cval=np.nan)
วิธีนี้ใช้ได้กับรูปภาพตัวอย่าง แต่คุณต้องทำการตรวจสอบเพิ่มเติมเพื่อให้มันทำงานกับการไล่ระดับสีอื่นๆ มันใช้ไม่ได้กับการไล่ระดับสีที่ไม่เป็นเชิงเส้นในทิศทาง x การสาธิต:
![สาธิต](https://i.stack.imgur.com/hYyAb.png)
สคริปต์เต็ม:
import numpy as np
from scipy.ndimage.interpolation import map_coordinates
def fix(g):
x = 1 if g[0,0] < g[0,-1] else -1
y = 1 if g[0,0] < g[-1,0] else -1
g = g[::y,::x]
m, n = g.shape
j_shift = np.interp(g[:,0], g[0,:], np.arange(n))
pad = int(np.max(j_shift))
i, j = np.indices((m, n + pad))
z = map_coordinates(g, [i, j - j_shift[:,None]], cval=np.nan)
return z[::y,::x]
import matplotlib.pyplot as plt
i, j = np.indices((50,100))
g = 0.01*i**2 + j
plt.figure(figsize=(6,5))
plt.subplot(211)
plt.imshow(g[::-1], interpolation='none')
plt.title('original')
plt.subplot(212)
plt.imshow(fix(g[::-1]), interpolation='none')
plt.title('fixed')
plt.tight_layout()
person
user6758673
schedule
01.10.2016