我有一個圖像,我沿著圖像對角線提取一條輪廓線,輪廓在對角線的2側集成了幾條線,所以我得到了一條平滑的輪廓線,現在我想找出曲線上表示圖像線輪廓的拐點。我嘗試過這種方法,但它給了我很多點,而且位置不是我想要的。import numpy as np
import matplotlib.pyplot as plt
arr = profiles[:,0].astype("int16")
d = np.diff(arr)
dd = np.diff(d)
plt.figure(figsize=(20,15))
plt.plot(np.arange(2047), d)
plt.plot(np.arange(2046), dd)
plt.plot(arr)for i in range(2046):
if (d[i] != 0) and (d[i] == dd[i]):
plt.plot(i, arr[i], 'o')您知道如何檢索曲線上拐點的坐標嗎?
2 回答

楊魅力
TA貢獻1811條經驗 獲得超6個贊
據此,您不是在尋找拐點。無論如何,這里有一個代碼使用第一個和第二個派生,但在它有一個平滑的via savgol_filter(來自scipy)之前。我認為這是您問題的最佳近似值。
from scipy import signal smooth = signal.savgol_filter(arr, 55,3) dxdy = signal.savgol_filter(np.gradient(smooth),55,3) dx2dy2 = signal.savgol_filter(np.gradient(dxdy),55,3) plt.subplot(121) plt.plot(smooth,'k') plt.plot(np.where(dx2dy2==dx2dy2.min()),smooth[np.where(dx2dy2==dx2dy2.min())],'ro') plt.subplot(122) plt.plot(dxdy,'r',label='first derivate') plt.plot(dx2dy2,'b',label='second derivate') plt.legend()
添加回答
舉報
0/150
提交
取消