私がやっていることは、画像のランダムな行でローカルミニマムを見つけて、そのリストのローカルミニマムを見つけることです。
私は1次元配列で最小値を見つけるために、機能を使用するには、次のコードを書いている:最小値を見つけることを再帰的に理解しようとする
import numpy as np
values = []
pixels = []
def find_minima(array):
'''
Takes a 1-d array as an argument, and returns a list of the
minimum values of the array, and the pixels at which the
minima occur
'''
# Find local minimum, and add to list of minimum-valued pixels
for i in range(1, len(array)-1):
if array[i-1] > array[i]:
if array[i+1] > array[i]:
values.append(array[i])
pixels.append([i])
else:
continue
return (values, pixels)
# Generate a random image
np.random.seed(seed=128)
side = 15
img = np.random.rand(side, side)
height = img.shape[0] # Inspect height of image
# Select row at random
index = np.random.randint(0, height)
row = img[index]
minimum_values, minimum_pixels = find_minima(row)
global_minimum_values, global_minimum_pixels = find_minima(minimum_values)
プログラムは、私はすでに見つかっminimum_values
のリストを渡すことを試みるアップまで、正常に動作しますそのリストにある最小値を見つけるための関数に戻ります。私は、変数の値がになることを期待してい
:
minimum_values = [0.2274, 0.6910, 0.2715, 0.3075]
minimum_pixels = [[1], [3], [7], [11]]
global_minimum_values = [0.2715]
global_minimum_pixels = [2]
が、それらはすべて同じだように、代わりに、プログラムは単に、元のリストにグローバル最小値を鋲:
minimum_values = [0.2274, 0.6910, 0.2715, 0.3075, 0.2715]
minimum_pixels = [[1], [3], [7], [11], [2]]
global_minimum_values = [0.2274, 0.6910, 0.2715, 0.3075, 0.2715]
global_minimum_pixels = [[1], [3], [7], [11], [2]]
希望の出力を生成するためにコードを変更するにはどうすればよいですか?
注:おそらくこれを行う簡単な方法がありますが、この方法は他の処理に最も適しているため、このコードが特に期待したとおりに動作しない理由を理解したいと思います。