在python中,使用一个图像的RGB值在另一个图像中创建感兴趣的区域



我想编程一个视觉搜索任务,在该任务中,参与者会看到一个视觉场景,并且必须通过点击来识别目标对象,此时试验结束。对于每个嵌入目标(视觉场景刺激)的视觉场景,我都有一个完全空白的附带图像,除了目标(目标刺激),它是黑色的,并且处于与视觉场景刺激中相同的确切位置。

我已经创建了一些试验,在这些试验中,python从图像库中提取视觉场景,并将其呈现给参与者,比如…

for i in range(numTrials):
theTrial = trialOrder[i]                        # grab pre-shuffled trial index
win.flip()
core.wait(1.0)              # wait one second
living_images[i].draw()

然而,我不知道如何为每个视觉场景刺激的目标创建一个感兴趣的区域,以及如果点击该部分,如何结束试验。

我想我应该创建一个CSV,其中视觉场景刺激在一列,目标在另一列,然后告诉python根据每个相应目标图像的RGB值为每个视觉场景刺激创建一个感兴趣的区域(因为它们是空白的,除了与视觉场景刺激相同位置的黑色目标)。

我不知道你是如何设置UI的,也不知道用户应该如何与图像交互,但如果你的场景图像和附带的目标图像大小相同,你可以使用附带的图像作为遮罩。

让用户点击图像(视觉场景)并捕捉他们选择的位置。然后检查该位置的附带目标图像的值。如果值为1(或0,取决于您对"活动"值的选择),则您会命中并继续前进。基本上,您可以使用目标图像作为ROI。

编辑:下面是一个如何实现的小例子

import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
ax.imshow(mask)
mask = np.zeros((50,50))
mask[5:10,5:10]=1
xi = 0
yi = 0
def onclick(event):
global xi,yi,mask
xi,yi = event.xdata,event.ydata
if mask[int(xi),int(yi)]>=1:
print('inside')
else:
print('outside')
cid = fig.canvas.mpl_connect('button_press_event', onclick)

显示的图像不一定是遮罩图像,而是要显示的任何场景。有关此检查的更多信息https://matplotlib.org/users/event_handling.html.

最新更新