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

In python, Use RGB value of one image to create area of interest in another image

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

我已经创建了试验,其中 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,具体取决于您选择的 "active" 值),您将获得成功并继续前进。基本上,您可以将目标图像用作 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.