#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']
Пример #2
0
    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)
Пример #3
0
# 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
Пример #4
0
         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')
Пример #5
0
#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', 
Пример #6
0
        
        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)))