У меня большой стек tif изображений +1500, и для каждого изображения у меня есть ~ 100 позиций в x, y, из которых я хочу извлечь значение маски.
Кадр данных можно визуализировать с помощью списков ниже:
x=[80.1,80.2,80.1,80.2,80,2,80.3]
y=[40.1,40.2,40.1,40.2,40.2,40.3]
frame = [1,2,3,4,5,6]
Кажется, что следующий код работает, но для его прохождения требуется некоторое время. Любой, кто мог бы предложить более быстрое решение:
blue = image_loader_video(blue_video) # video as numpy array
def df_extractor(row):
a,b = row['x'],row['y']
frame = int(row['frame'])
array = blue[frame]
nx,ny = blue_shape
y,x = np.ogrid[-a:nx-a,-b:ny-b]
mask = x*x + y*y <= lip_int_size
mask2 = x*x + y*y <= lip_int_size+9 # to make a "gab" between BG and roi
BG_mask = (x*x + y*y <=lip_BG_size)
BG_mask = BG_mask-mask2
return (sum((array[mask]))),np.median(((array[BG_mask])))
final_df['signal_np'],final_df['np_bg'] = final_df.apply(df_extractor,axis= 1)