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