#Create stimuli if info['Flip']=='n': lum = colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5, size=512)*info['Edge Contrast Lum'] lmlms= colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5, size=512)*info['Edge Contrast LM'] slms= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(0.5+info['Gap']), size=512)*info['Edge Contrast S'] lm= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(0.5+info['Gap']), size=512)*info['Edge Contrast LM'] s= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(0.5+info['Gap']), size=512)*info['Edge Contrast S'] if info['Flip']=='y': lum = makeRevEdgeGauss(width=info['Blur'],center=0.5, size=512)*info['Edge Contrast Lum'] lmlms= makeRevEdgeGauss(width=info['Blur'],center=0.5, size=512)*info['Edge Contrast LM'] slms= makeRevEdgeGauss(width=info['Blur'],center=(0.5-info['Gap']), size=512)*info['Edge Contrast S'] lm= makeRevEdgeGauss(width=info['Blur'],center=(0.5-info['Gap']), size=512)*info['Edge Contrast LM'] s= makeRevEdgeGauss(width=info['Blur'],center=(0.5-info['Gap']), size=512)*info['Edge Contrast S'] tex= colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s) texlms = colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lmlms, S=slms) edgePos = 0.0 #Start Message startMessage = visual.TextStim(myWin, pos=(0.0,-0.6), height =0.3, colorSpace = 'rgb', color=-1, wrapWidth=4.0, text="Please press click and hold the left mouse button the align the marker and edge, when you are happy right click to move onto the next trial. Press any key when you are ready to continue.", ) startMessage.draw() myWin.flip() junk = event.waitKeys() #for thisCond in Conds: for thisTrial in trials: info['Channel']=thisTrial['condList'] print info['Channel']
bitsMode = 'Fast' myMon=monitors.Monitor('heron') conversionMatrix = myMon.getDKL_RGB(RECOMPUTE=False) def makeFilteredNoise(res, radius, shape='gauss'): noise = np.random.random([res, res]) kernel = filters.makeMask(res, shape='gauss', radius=radius) filteredNoise = filters.conv2d(kernel, noise) filteredNoise = ((filteredNoise-filteredNoise.min())/(filteredNoise.max()-filteredNoise.min())*2-1) return filteredNoise #Create stimuli lum = colorFunctions.makeEdgeGauss(width=blur,center=0.5)*0.3 lm= colorFunctions.makeEdgeGauss(width=blur,center=(0.5+gap))*0.3 s=colorFunctions.makeEdgeGauss(width=0.2,center=0.5)*0.0 tex= colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s) noiseContrast = 1.0 noise1 = makeFilteredNoise(512, radius=noiseSize)*noiseContrast lum += noise1 noise2 = makeFilteredNoise(res=512, radius=noiseSize)*noiseContrast lm += noise2 lumEdge= colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm*0, S=s*0, conversionMatrix = conversionMatrix) rgEdge = colorFunctions.dklCartToRGB_2d(LUM=lum*0, LM=lm, S=s*0, conversionMatrix = conversionMatrix) combEdge = colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s*0, conversionMatrix = conversionMatrix) #Create window and draw stimuli myWin = visual.Window(size = (800,600), monitor = monitor, bitsMode = bitsMode)
# For Loop to Run Through the Trials for thisDistance in stairs: trialClock.reset() print thisDistance # #Calculate the size of the gap in percentage terms # gapPix = (misc.deg2pix(info['Gap'], monitor = myMon)*0.0512) # gapDeg = info['Gap']/2 # Create stimuli lum = colorFunctions.makeEdgeGauss(width=info["Blur"], center=info["lumEdgePos"]) * 0.3 lm = s = colorFunctions.makeEdgeGauss(width=info["Blur"], center=(info["lumEdgePos"] + info["Gap"])) * 0.3 # s=colorFunctions.makeEdgeGauss(width=info['Blur'],center=(info['lumEdgePos']+info['Gap']))*0.3 tex = colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s) # noise1 = makeFilteredNoise(512, radius=info['Noise Size'])*info['Noise Contrast'] # lum += noise1 # noise2 = makeFilteredNoise(res=512, radius=info['Noise Size'])*info['Noise Contrast'] # lm += noise2 # noise3 = makeFilteredNoise(res=512, radius=info['Noise Size'])*info['Noise Contrast'] # s += noise3 # lumEdge= colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm*0, S=s*0, conversionMatrix = conversionMatrix) # rgEdge = colorFunctions.dklCartToRGB_2d(LUM=lum*0, LM=lm, S=s*0, conversionMatrix = conversionMatrix) sEdge = colorFunctions.dklCartToRGB_2d(LUM=lum * 0, LM=lm * 0, S=s, conversionMatrix=conversionMatrix) # combEdge = colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s*0, conversionMatrix = conversionMatrix) # sCombEdge = colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm*0, S=s, conversionMatrix = conversionMatrix) # Draw stimuli
if order==2: sigmaLumSecond += thisIntensity # print sigma #Staircase chromatic blur for first image lmFirst = ndimage.gaussian_filter(lm, sigma=sigmaFirst, order=0, output=None, mode='reflect', cval=0.0) sFirst = ndimage.gaussian_filter(s, sigma=sigmaFirst, order=0, output=None, mode='reflect', cval=0.0) lumFirst = ndimage.gaussian_filter(lum, sigma=sigmaLumFirst) #Staircase chromatic blur for second image lmSecond = ndimage.gaussian_filter(lm, sigma=sigmaSecond, order=0, output=None, mode='reflect', cval=0.0) sSecond = ndimage.gaussian_filter(s, sigma=sigmaSecond, order=0, output=None, mode='reflect', cval=0.0) lumSecond = ndimage.gaussian_filter(lum, sigma=sigmaLumSecond) #change back to RGB rgbPictureFirst = colorFunctions.dklCartToRGB_2d(lumFirst, lmFirst, sFirst, conversionMatrix) rgbPictureSecond = colorFunctions.dklCartToRGB_2d(lumSecond, lmSecond, sSecond, conversionMatrix) #Divide all the values by 2 so that there is room for the increases caused by the Gaussian filter rgbPictureFirst=rgbPictureFirst/2 rgbPictureSecond=rgbPictureSecond/2 # #Draw the picture imgFirst = visual.PatchStim(myWin, tex=rgbPictureFirst, units='deg', sf=(1/10.0), size=10.0) imgFirst.draw() myWin.flip() core.wait(info['displayT']) myWin.getMovieFrame() myWin.saveMovieFrames('Blur.jpg')
#lum = copy.copy(dklPicture[:,:,0])*(0.029*10) lum = copy.copy(dklPicture[:,:,0]) lm = copy.copy(dklPicture[:,:,1])*0 s = copy.copy(dklPicture[:,:,2])*0 lum2 = copy.copy(dklPicture2[:,:,0])*0 #put the information in lm instead of lum #lm2 = copy.copy(dklPicture2[:,:,0])*(0.074*10) lm2 = copy.copy(dklPicture2[:,:,0]) s2 = copy.copy(dklPicture2[:,:,2])*0 lum = lum+lum2 lm = lm+lm2 s = s+s2 rgbPictureFirst = colorFunctions.dklCartToRGB_2d(lum, lm, s) rgbPictureFirst /=2 grating = visual.PatchStim(myWin, tex = rgbPictureFirst, units='deg', sf=(1/20.0), size=20.0) grating.draw() SpatialFrequency = 1.0 alignment = 90 #colourGrating1 = visual.PatchStim(myWin, tex = 'sqr', size = (10.0,10.0), pos = (0, 0), sf = SpatialFrequency, units = 'deg', # color = (0,45,1.0), colorSpace = 'dkl', opacity = 0.5) #colourGrating2 = visual.PatchStim(myWin, tex = 'sqr', size = (10.0,5.0), pos= (0, -2.5), sf = SpatialFrequency, units = 'deg', # color = (0,45,1.0), colorSpace = 'dkl', opacity = 0.25) #lumGrating1 = visual.PatchStim(myWin, tex = 'sqr', size = (10.0,10.0), pos=(0,0), sf = SpatialFrequency, units = 'deg',
order = random.randint(1.0, 2.0) # extract the picture array from the dictionary for p, d in thisStair.extraInfo.iteritems(): dklPicture = d # print 'min dkl', np.minimum.reduce(np.minimum.reduce(np.minimum.reduce(d))) # print 'max dkl', np.maximum.reduce(np.maximum.reduce(np.maximum.reduce(d))) lum = copy.copy(dklPicture[:,:,0])*info['Achromatic'] lm = copy.copy(dklPicture[:,:,1])*info['Isoluminant'] s = copy.copy(dklPicture[:,:,2])*info['Isoluminant'] #change back to RGB rgbPicture = colorFunctions.dklCartToRGB_2d(lum, lm, s, conversionMatrix) # if info['Isoluminant']==1: # rgbmin = np.minimum.reduce(np.minimum.reduce(np.minimum.reduce(rgbPicture))) # rgbmax = np.maximum.reduce(np.maximum.reduce(np.maximum.reduce(rgbPicture))) #Forces the range to be -1-1 again. # range = (np.maximum.reduce(np.maximum.reduce(np.maximum.reduce(rgbPicture))))-(np.minimum.reduce(np.minimum.reduce(np.minimum.reduce(rgbPicture)))) # rgbPicture = (((rgbPicture-(np.minimum.reduce(np.minimum.reduce(np.minimum.reduce(rgbPicture)))))/range)*2)+-1 #Halves the RGB values to ensure that all values are within -1-1 rgbPicture/=2 print 'min rgb', np.minimum.reduce(np.minimum.reduce(np.minimum.reduce(rgbPicture))) print 'max rgb', np.maximum.reduce(np.maximum.reduce(np.maximum.reduce(rgbPicture)))