def make_raw(animal='cat', show=True): files = glob.glob('myimages/*.jpg') files.sort() im_list = [] if animal == 'cat': # can be picky about images # files=[files[i] for i in [ 0,1,2,3,4,5,29,32,35,36,46,54,57,58,84]] files = [ files[i] for i in [ 0, 1, 2, 3, 4, 5, 6, 10, 12, 15, 17, 19, 20, 29, 32, 33, 35, 36, 46, 38, 40, 44, 54, 57, 58, 60, 69, 72, 80, 84 ] ] print "Image files: %d" % len(files) print "Animal:", animal w = Waitbar(True) file_count = len(files) for count, fname in enumerate(files): im = Image.open(fname) orig_size = im.size if animal == 'cat': new_size = [ int(o * 60. / 0.5 * 5.5 / orig_size[0]) for o in orig_size ] elif animal == 'mouse': new_size = [ int(o * 60. / 7. * 13 / orig_size[0]) for o in orig_size ] else: raise ValueError im = im.convert("L") if fname == files[0]: print "Resize: %dx%d --> %dx%d" % (orig_size[0], orig_size[1], new_size[0], new_size[1]) im = im.resize(new_size) if show: im.show() a = numpy.asarray(im.getdata(), dtype='B') a.shape = im.size[::-1] im_list.append(a) w.update((count + 1) / float(file_count)) print w, sys.stdout.flush() var = {'im': im_list, 'im_scale_shift': [1.0, 0.0]} print return var
def make_dog(var,sd1=1,sd2=3,size=32,shape='valid'): im2_list=[] im_scale_shift=var['im_scale_shift'] im_count=len(var['im']) w = Waitbar(True) for count,im in enumerate(var['im']): orig_size=im.shape im2=dog_filter(im*im_scale_shift[0]+im_scale_shift[1],sd1,sd2,size,shape) new_size=im2.shape im2=im2/im2.std() im2=im2-im2.mean() if count==0: print "Dog %d,%d: %dx%d --> %dx%d" % (sd1,sd2, orig_size[0],orig_size[1], new_size[0],new_size[1]) im2_list.append(im2) w.update((count+1)/float(im_count)) print w, sys.stdout.flush() var2={'im':im2_list,'im_scale_shift':[1.0,0.0]} print return var2
def make_norm(var, mu=0, sd=1): im2_list = [] im_scale_shift = var['im_scale_shift'] im_count = len(var['im']) w = Waitbar(True) for count, im in enumerate(var['im']): im2 = im.copy() im2 = im2 - im2.mean() im2 = im2 / im2.std() if count == 0: print "Norm %.1f,%.1f" % (mu, sd) im2_list.append(im2) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} print return var2
def make_sigmoid(var): im2_list = [] im_scale_shift = var['im_scale_shift'] im_count = len(var['im']) w = Waitbar(True) bottom = 0.0 top = 5.0 for count, imm in enumerate(var['im']): im = imm * im_scale_shift[0] + im_scale_shift[1] im2 = copy.copy(im) im2[im < 0] = bottom * (2.0 / (1.0 + numpy.exp(-2.0 * (im[im < 0] / bottom))) - 1.0) im2[im >= 0] = top * (2.0 / (1.0 + numpy.exp(-2.0 * (im[im >= 0] / top))) - 1.0) new_size = im2.shape im2 = im2 / im2.std() im2_list.append(im2) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} print return var2
def make_sigmoid(var): im2_list=[] im_scale_shift=var['im_scale_shift'] im_count=len(var['im']) w = Waitbar(True) bottom=0.0 top=5.0 for count,imm in enumerate(var['im']): im=imm*im_scale_shift[0]+im_scale_shift[1] im2=copy.copy(im) im2[im<0]=bottom*(2.0/(1.0+numpy.exp(-2.0*(im[im<0]/bottom)))-1.0) im2[im>=0]=top*(2.0/(1.0+numpy.exp(-2.0*(im[im>=0]/top)))-1.0) new_size=im2.shape im2=im2/im2.std() im2_list.append(im2) w.update((count+1)/float(im_count)) print w, sys.stdout.flush() var2={'im':im2_list,'im_scale_shift':[1.0,0.0]} print return var2
def add_noise(var, sd=1.0): im2_list = [] im_scale_shift = var['im_scale_shift'] im_count = len(var['im']) w = Waitbar(True) for count, im in enumerate(var['im']): orig_size = im.shape im2 = im * im_scale_shift[0] + im_scale_shift[ 1] + sd * numpy.random.randn(im.shape[0], im.shape[1]) im2 = im2 - im2.mean() im2 = im2 / im2.std() im2_list.append(im2) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() print var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} return var2
def make_pos(var, type='ON', offset=5, min=0): im2_list = [] im_scale_shift = var['im_scale_shift'] im_count = len(var['im']) w = Waitbar(True) for count, imm in enumerate(var['im']): im = imm * im_scale_shift[0] + im_scale_shift[1] im2 = copy.copy(im) if type == 'OFF': im2 = -im2 im2 = im2 + offset im2[im2 < min] = min new_size = im2.shape im2_list.append(im2) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} print return var2
def make_white(var): im_scale_shift = var['im_scale_shift'] im2_list = [] im_count = len(var['im']) w = Waitbar(True) for count, im in enumerate(var['im']): im = im - im.mean() + 1 # add a little DC to get rid of nans yf = fftshift(fft2(im * im_scale_shift[0] + im_scale_shift[1])) fl = 1.0 / absolute(yf) yffl = yf * fl im2 = real(ifft2(ifftshift(yffl))) im2 = im2 - im2.mean() im2 = im2 / im2.std() if count == 0: print "Whiten." im2_list.append(im2) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() print var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} return var2
def make_white(var): im_scale_shift=var['im_scale_shift'] im2_list=[] im_count=len(var['im']) w = Waitbar(True) for count,im in enumerate(var['im']): yf=fftshift(fft2(im*im_scale_shift[0]+im_scale_shift[1])) fl=1.0/absolute(yf) yffl=yf*fl; im2=real(ifft2(ifftshift(yffl))) im2=im2/im2.std() im2=im2-im2.mean() if count==0: print "Whiten." im2_list.append(im2) w.update((count+1)/float(im_count)) print w, sys.stdout.flush() print var2={'im':im2_list,'im_scale_shift':[1.0,0.0]} return var2
def make_blur(var,sd=1.0,radius=None): if not radius: radius=sd*3.0 im2_list=[] im_scale_shift=var['im_scale_shift'] im_count=len(var['im']) w = Waitbar(True) for count,im in enumerate(var['im']): orig_size=im.shape im2=dog_filter(im*im_scale_shift[0]+im_scale_shift[1],sd,0,2*radius+1,shape='same') new_size=im2.shape im2=im2/im2.std() im2=im2-im2.mean() if count==0: print "Blur %d,%d: %dx%d --> %dx%d" % (sd,radius, orig_size[0],orig_size[1], new_size[0],new_size[1]) im2_list.append(im2) w.update((count+1)/float(im_count)) print w, sys.stdout.flush() print var2={'im':im2_list,'im_scale_shift':[1.0,0.0]} return var2
def make_pos(var,type='ON',offset=5,min=0): im2_list=[] im_scale_shift=var['im_scale_shift'] im_count=len(var['im']) w = Waitbar(True) for count,imm in enumerate(var['im']): im=imm*im_scale_shift[0]+im_scale_shift[1] im2=copy.copy(im) if type=='OFF': im2=-im2 im2=im2+offset im2[im2<min]=min new_size=im2.shape im2_list.append(im2) w.update((count+1)/float(im_count)) print w, sys.stdout.flush() var2={'im':im2_list,'im_scale_shift':[1.0,0.0]} print return var2
def make_dog(var, sd1=1, sd2=3, size=32, shape='valid'): im2_list = [] im_scale_shift = var['im_scale_shift'] im_count = len(var['im']) w = Waitbar(True) for count, im in enumerate(var['im']): orig_size = im.shape im2 = dog_filter(im * im_scale_shift[0] + im_scale_shift[1], sd1, sd2, size, shape) new_size = im2.shape im2 = im2 - im2.mean() im2 = im2 / im2.std() if count == 0: print "Dog %d,%d: %dx%d --> %dx%d" % ( sd1, sd2, orig_size[0], orig_size[1], new_size[0], new_size[1]) im2_list.append(im2) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} print return var2
def make_raw(animal='cat',show=True): files=glob.glob('/home/bblais/Pictures/natural_images/*.jpg') files.sort() im_list=[] if animal=='cat': # can be picky about images # files=[files[i] for i in [ 0,1,2,3,4,5,29,32,35,36,46,54,57,58,84]] files=[files[i] for i in [ 0,1,2,3,4,5,6,10,12,15,17,19,20,29,32,33,35,36,46,38,40,44,54,57,58,60,69,72,80,84]] print "Image files: %d" % len(files) print "Animal:", animal w = Waitbar(True) file_count=len(files) for count,fname in enumerate(files): im=Image.open(fname) orig_size=im.size if animal=='cat': new_size=[int(o*60./0.5*5.5/orig_size[0]) for o in orig_size] elif animal=='mouse': new_size=[int(o*60./7.*13/orig_size[0]) for o in orig_size] else: raise ValueError im=im.convert("L") if fname==files[0]: print "Resize: %dx%d --> %dx%d" % (orig_size[0],orig_size[1], new_size[0],new_size[1]) im=im.resize(new_size) if show: im.show() a=numpy.asarray(im.getdata(),dtype='B') a.shape=im.size[::-1] im_list.append(a) w.update((count+1)/float(file_count)) print w, sys.stdout.flush() var={'im':im_list,'im_scale_shift':[1.0,0.0]} print return var
def make_raw_vanhateren100(): fnames = glob.glob('iml/*.iml') im_list = [] w = Waitbar(True) for i, filename in enumerate(fnames): fin = open(filename, 'rb') s = fin.read() fin.close() arr = array.array('H', s) arr.byteswap() img = numpy.array(arr, dtype='uint16').reshape(1024, 1536) im_list.append(img) w.update((i + 1) / 100.0) print w, sys.stdout.flush() var = {'im': im_list, 'im_scale_shift': [1.0, 0.0]} return var
def eqn_images(var,eqn='x'): im2_list=[] im_scale_shift=var['im_scale_shift'] im_count=len(var['im']) w = Waitbar(True) for count,im in enumerate(var['im']): x=im im2=eval(eqn) im2_list.append(im2) w.update((count+1)/float(im_count)) print w, sys.stdout.flush() var2={'im':im2_list,'im_scale_shift':[1.0,0.0]} print return var2
def eqn_images(var, eqn='x'): im2_list = [] im_scale_shift = var['im_scale_shift'] im_count = len(var['im']) w = Waitbar(True) for count, im in enumerate(var['im']): x = im im2 = eval(eqn) im2_list.append(im2) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} print return var2
def make_log(var): im2_list=[] im_scale_shift=var['im_scale_shift'] im_count=len(var['im']) w = Waitbar(True) for count,im in enumerate(var['im']): im2=numpy.log(im+1.0) new_size=im2.shape im2=im2/im2.std() im2_list.append(im2) w.update((count+1)/float(im_count)) print w, sys.stdout.flush() var2={'im':im2_list,'im_scale_shift':[1.0,0.0]} print return var2
def make_log(var): im2_list = [] im_scale_shift = var['im_scale_shift'] im_count = len(var['im']) w = Waitbar(True) for count, im in enumerate(var['im']): im2 = numpy.log(im + 1.0) new_size = im2.shape im2 = im2 / im2.std() im2_list.append(im2) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} print return var2
def make_blur(var, sd=1.0, radius=None): if not radius: radius = sd * 3.0 im2_list = [] im_scale_shift = var['im_scale_shift'] im_count = len(var['im']) w = Waitbar(True) for count, im in enumerate(var['im']): orig_size = im.shape im2 = dog_filter(im * im_scale_shift[0] + im_scale_shift[1], sd, 0, 2 * radius + 1, shape='same') new_size = im2.shape im2 = im2 - im2.mean() im2 = im2 / im2.std() if count == 0: print "Blur %d,%d: %dx%d --> %dx%d" % (sd, radius, orig_size[0], orig_size[1], new_size[0], new_size[1]) im2_list.append(im2) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() print var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} return var2
def read_raw_vanhateren100(show=True): fnames=glob.glob('original/vanhateren_iml/*.iml') im_list=[] w = Waitbar(True) for i,filename in enumerate(fnames): fin = open( filename, 'rb' ) s = fin.read() fin.close() arr = array.array('H', s) arr.byteswap() img = numpy.array(arr, dtype='uint16').reshape(1024,1536) im_list.append(img) if show: imm=Image.fromarray(img) imm.show(command='display') w.update((i+1)/100.0) print w, sys.stdout.flush() var={'im':im_list,'im_scale_shift':[1.0,0.0]} return var
def make_rot(var, which_angles, more=False): def radians(deg): return deg * numpy.pi / 180.0 im_scale_shift = var['im_scale_shift'] im2_list = [] for a in which_angles: print "Rotate ", a im_count = len(var['im']) w = Waitbar(True) for count, imm in enumerate(var['im']): im = imm * im_scale_shift[0] + im_scale_shift[1] orig_size = im.shape im = im[:, :orig_size[0]] # crop to square sz = im.shape new_size = sz Im = pn.array2image(im).rotate(a) im2 = pn.image2array(Im) # assume square images, and worst case (45 deg) s = sz[0] l = int(numpy.ceil(s / numpy.sqrt(2))) i1 = int((s - l) / 2) im2 = im2[i1:(i1 + l), i1:(i1 + l)] im2 = im2 - im2.mean() im2 = im2 / im2.std() if count == 0: print "Rotate %d: %dx%d --> %dx%d" % ( a, orig_size[0], orig_size[1], new_size[0], new_size[1]) im2_list.append(im2) if more: im = imm * im_scale_shift[0] + im_scale_shift[1] orig_size = im.shape im = im[:, -orig_size[0]:] # crop to square sz = im.shape new_size = sz Im = pn.array2image(im).rotate(a) im2 = pn.image2array(Im) # assume square images, and worst case (45 deg) s = sz[0] l = int(numpy.ceil(s / numpy.sqrt(2))) i1 = int((s - l) / 2) im2 = im2[i1:(i1 + l), i1:(i1 + l)] im2 = im2 / im2.std() im2 = im2 - im2.mean() im2_list.append(im2) if count == 0: print "Rotate more %d: %dx%d --> %dx%d" % ( a, orig_size[0], orig_size[1], new_size[0], new_size[1]) w.update((count + 1) / float(im_count)) print w, sys.stdout.flush() print var2 = {'im': im2_list, 'im_scale_shift': [1.0, 0.0]} return var2
def make_rot(var,which_angles,more=False): def radians(deg): return deg*numpy.pi/180.0 im_scale_shift=var['im_scale_shift'] im2_list=[] for a in which_angles: print "Rotate ",a im_count=len(var['im']) w = Waitbar(True) for count,imm in enumerate(var['im']): im=imm*im_scale_shift[0]+im_scale_shift[1] orig_size=im.shape im=im[:,:orig_size[0]] # crop to square sz=im.shape new_size=sz Im=pn.array2image(im).rotate(a) im2=pn.image2array(Im) # assume square images, and worst case (45 deg) s=sz[0] l=int(numpy.ceil(s/numpy.sqrt(2))) i1=int((s-l)/2) im2=im2[i1:(i1+l),i1:(i1+l)] im2=im2/im2.std() im2=im2-im2.mean() if count==0: print "Rotate %d: %dx%d --> %dx%d" % (a, orig_size[0],orig_size[1], new_size[0],new_size[1]) im2_list.append(im2) if more: im=imm*im_scale_shift[0]+im_scale_shift[1] orig_size=im.shape im=im[:,-orig_size[0]:] # crop to square sz=im.shape new_size=sz Im=pn.array2image(im).rotate(a) im2=pn.image2array(Im) # assume square images, and worst case (45 deg) s=sz[0] l=int(numpy.ceil(s/numpy.sqrt(2))) i1=int((s-l)/2) im2=im2[i1:(i1+l),i1:(i1+l)] im2=im2/im2.std() im2=im2-im2.mean() im2_list.append(im2) if count==0: print "Rotate more %d: %dx%d --> %dx%d" % (a, orig_size[0],orig_size[1], new_size[0],new_size[1]) w.update((count+1)/float(im_count)) print w, sys.stdout.flush() print var2={'im':im2_list,'im_scale_shift':[1.0,0.0]} return var2
def read_raw_bbsk(animal='cat',subset=True,show=True): if subset: files=glob.glob('original/subset_bbsk081604/*.jpg') else: files=glob.glob('original/all_bbsk081604/*.jpg') files.sort() im_list=[] print "Image files: %d" % len(files) print "Animal:", animal w = Waitbar(True) file_count=len(files) for count,fname in enumerate(files): im=Image.open(fname) orig_size=im.size # the bbsk images are angular size 60 degrees x 40 degrees # the raw images are resized so that # 5.5 pixels ~ 0.5 degrees (cat retina) - default # # ...or... # # 13 pixels ~ 7 degrees (mouse retina) # # see the contained iccns.pdf # if animal=='cat': new_size=[int(o*60./0.5*5.5/orig_size[0]) for o in orig_size] elif animal=='mouse': new_size=[int(o*60./7.*13/orig_size[0]) for o in orig_size] else: raise ValueError im=im.convert("L") if fname==files[0]: print "Resize: %dx%d --> %dx%d" % (orig_size[0],orig_size[1], new_size[0],new_size[1]) im=im.resize(new_size) if show: im.show() # I know these have a max value of 255, so 'B' will work a=numpy.asarray(im.getdata(),dtype='B') a.shape=im.size[::-1] im_list.append(a) w.update((count+1)/float(file_count)) print w, sys.stdout.flush() var={'im':im_list,'im_scale_shift':[1.0,0.0]} print return var