私は、一連のデータの小刻みに動くことを実装する必要があるソフトウェアに取り組んでいます。これが私が受け取る入力のサンプルであり、各垂直ピクセルストリップの明度プロットとマージされています。
左マージンが本当に波打っていること(つまり、最小値/最大値が1トンあること)は簡単にわかります。画像の重要なポイントのセットを生成したいと思います。ガウス平滑化関数をデータに約10回適用しましたが、そもそもかなり波打っているようです。
何か案は?
これが私の元のコードですが、(小刻みに動くために)非常に良い結果を生成しません:
def local_maximum(list, center, delta):
maximum = [0, 0]
for i in range(delta):
if list[center + i] > maximum[1]: maximum = [center + i, list[center + i]]
if list[center - i] > maximum[1]: maximum = [center - i, list[center - i]]
return maximum
def count_maxima(list, start, end, delta, threshold = 10):
count = 0
for i in range(start + delta, end - delta):
if abs(list[i] - local_maximum(list, i, delta)[1]) < threshold: count += 1
return count
def wiggliness(list, start, end, delta, threshold = 10):
return float(abs(start - end) * delta) / float(count_maxima(list, start, end, delta, threshold))