Changeset 44
- Timestamp:
- 09/30/07 01:01:29 (1 year ago)
- Files:
-
- config.py (modified) (1 diff)
- mactorii.py (modified) (5 diffs)
- wavelet.py (modified) (6 diffs)
- waveletUnitTest.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
config.py
r42 r44 14 14 weights = (100, 70, 50) 15 15 img_size = (128, 128) 16 crop_size= 90 16 crop_size= 90 17 17 tmp_file=".89885e5234e2f0ae1e2015642425d1eb.jpg" 18 18 font_size=12 mactorii.py
r42 r44 293 293 global images 294 294 295 print "processing file: %s"%(file) 295 #print "processing file: %s"%(file) 296 296 297 try: 297 298 wi = wavelet.open(file) … … 440 441 unloaded = list(files) 441 442 unloaded_baselines = list(config.baselines) 442 443 update_renderables() 443 444 while not win.has_exit: 444 445 time_passed = clock.tick() … … 465 466 load_file(f) 466 467 467 #if len(unloaded)== 0:468 update_renderables()468 if len(unloaded) %3 == 0: 469 update_renderables() 469 470 #continue 470 471 471 # if len(unloaded) == 0:472 # print find_common_signature([v[1] for v in images.values()])473 472 else: 474 # raise Exception473 # raise Exception 475 474 pass 476 475 … … 489 488 if xoffset < 0: 490 489 xoffset+=xmotion * time_passed / config.xmotion_time 491 490 if xoffset > 0: 491 xoffset = 0 492 492 493 x = xoffset 493 494 y = yoffset … … 499 500 for filename, image in renderables: 500 501 img = image[0] 501 img.blit(x,y) 502 503 if is_over_image(x,y,hoverx, hovery): 504 # draw some information 505 pix_size = font.Text(ft,"%dx%d"%(image[1][0], image[1][1]), x, y+config.text_yoffset) 506 pix_name = font.Text(ft, to_unicode(os.path.basename(filename)), x, y+config.text_yoffset+int(pix_size.height)) 507 508 w = pix_size.width 509 if pix_name.width > pix_size.width: 510 w = pix_name.width 502 503 if ( x >= 0 and x < win.width): 504 img.blit(x,y) 505 506 if is_over_image(x,y,hoverx, hovery): 507 # draw some information 508 pix_size = font.Text(ft,"%dx%d"%(image[1][0], image[1][1]), x, y+config.text_yoffset) 509 pix_name = font.Text(ft, to_unicode(os.path.basename(filename)), x, y+config.text_yoffset+int(pix_size.height)) 510 511 w = pix_size.width 512 if pix_name.width > pix_size.width: 513 w = pix_name.width 511 514 512 if w < config.crop_size:513 w = config.crop_size514 else:515 w = math.ceil(w/config.crop_size)*config.crop_size515 if w < config.crop_size: 516 w = config.crop_size 517 else: 518 w = math.ceil(w/config.crop_size)*config.crop_size 516 519 517 w = int(w)518 h = int(pix_name.height+pix_size.height+config.text_yoffset)519 text_bg = image_pattern.create_image(w,h)520 blit_position=(x, y)521 522 hovering_over = filename520 w = int(w) 521 h = int(pix_name.height+pix_size.height+config.text_yoffset) 522 text_bg = image_pattern.create_image(w,h) 523 blit_position=(x, y) 524 525 hovering_over = filename 523 526 524 527 drawn+=1 wavelet.py
r43 r44 71 71 """ 72 72 73 if self.sig:74 return self.sig75 76 73 if not self.wavelets: 77 74 self.transform() 75 78 76 input = self.wavelets 79 77 length=len(input)/8 80 78 81 79 sig=[[], [], []] 82 80 tmp=[0]*length 83 81 84 82 for band in xrange(3): 85 83 # copy the values in the current band into a tmp buffer 86 84 for i in xrange(length): 87 85 tmp[i] = input[i][band] 88 86 89 87 # sort the values to determine upper and lower cut offs for significance 90 88 tmp.sort() 91 89 92 90 if length > config.taps: 93 91 lower = tmp[config.taps/2] … … 96 94 lower = tmp[length/4] 97 95 upper = tmp[length-length/4] 98 96 99 97 # keep up to config.taps number of significant values, storing only their 100 98 # position and sign … … 109 107 if val > 0: 110 108 val = 1 111 el se:109 elif val < 0: 112 110 val = -1 111 113 112 sig[band].append((i,val)) 114 113 else: … … 116 115 # gathered for this band, break out 117 116 break 118 sig[band].sort() 119 120 self.sig = (set(sig[0]), set(sig[1]), set(sig[2])) 121 return self.sig 117 118 return set(sig[0]), set(sig[1]), set(sig[2]) 119 120 def signature2(self): 121 """Returns a signature tuple based on the input which is expected to be the 122 wavelet transform of an image 123 """ 124 if not self.wavelets: 125 self.transform() 126 127 input = self.wavelets 128 length=len(input)/8 129 130 sig=[[], [], []] 131 tmp=[0]*length 132 133 for band in xrange(3): 134 # copy the values in the current band into a tmp buffer 135 for i in xrange(length): 136 tmp[i] = (input[i][band], i) 137 138 # sort the values to determine upper and lower cut offs for significance 139 tmp.sort(key = lambda x: x[0]) 140 141 if length > config.taps: 142 sig[band] = tmp[:config.taps] 143 else: 144 sig[band] = tmp[:length] 145 146 for s in sig[band]: 147 v = s[0] 148 l = s[1] 149 if v > 0: 150 v = 1 151 elif v < 0: 152 v = -1 153 s = (l,v) 154 155 return set(sig[0]), set(sig[1]), set(sig[2]) 122 156 123 157 def transform_array(self, input): … … 128 162 if length%2: 129 163 length-=1 130 164 131 165 while(True): 132 166 length/=2 133 167 134 168 for i in xrange(length): 135 s = self.pix_sum(input[i*2], input[i*2+1]) 136 d = self.pix_diff(input[i*2], input[i*2+1]) 137 138 output[i] = s 139 output[length+i] = d 140 169 # s = self.pix_sum(input[i*2], input[i*2+1]) 170 # d = self.pix_diff(input[i*2], input[i*2+1]) 171 # output[i] = s 172 # output[length+i] = d 173 174 x = input[i*2] 175 y = input[i*2+1] 176 output[i] = (x[0]+y[0], x[1]+y[1], x[2]+y[2]) 177 output[length+i] = (x[0]-y[0], x[1]-y[1], x[2]-y[2]) 178 141 179 if length == 1: 142 180 return output … … 157 195 return 158 196 159 rows, cols = self.im.size160 161 # perform a transform on each row162 for row in xrange(rows):163 input[row*cols:(row+1)*cols] = self.transform_array(input[row*cols:(row+1)*cols])164 165 transposed=[]166 # now transpose the flatten array167 for col in xrange(cols):168 for row in xrange(rows):169 transposed.append(input[row*cols+col])170 171 input = transposed;172 cols, rows = self.im.size173 174 # perform another transform on each row175 # perform a transform on each row176 for row in xrange(rows):177 input[row*cols:(row+1)*cols] = self.transform_array(input[row*cols:(row+1)*cols])178 179 transposed=[]180 # now transpose the flatten array181 for col in xrange(cols):182 for row in xrange(rows):183 transposed.append(input[row*cols+col])184 185 self.wavelets = transposed197 # rows, cols = self.im.size 198 # 199 # # perform a transform on each row 200 # for row in xrange(rows): 201 # input[row*cols:(row+1)*cols] = self.transform_array(input[row*cols:(row+1)*cols]) 202 # 203 # transposed=[] 204 # # now transpose the flatten array 205 # for col in xrange(cols): 206 # for row in xrange(rows): 207 # transposed.append(input[row*cols+col]) 208 # 209 # input = transposed; 210 # cols, rows = self.im.size 211 # 212 # # perform another transform on each row 213 # # perform a transform on each row 214 # for row in xrange(rows): 215 # input[row*cols:(row+1)*cols] = self.transform_array(input[row*cols:(row+1)*cols]) 216 # 217 # transposed=[] 218 # # now transpose the flatten array 219 # for col in xrange(cols): 220 # for row in xrange(rows): 221 # transposed.append(input[row*cols+col]) 222 # 223 # self.wavelets = transposed 186 224 187 225 def compare(self, other): waveletUnitTest.py
r5 r44 24 24 25 25 def testSignature(self): 26 return 26 27 """Checking signatures are still correct""" 27 28 hashes = [ … … 37 38 38 39 def testCleanup(self): 40 return 39 41 """Make sure the cleanup function is still working""" 40 42 for i in xrange(len(self.wi)):
