| 
						 | 
						- import cv2
 - import math
 - import numpy as np
 - 
 - kBACKGROUND_NUM = 10
 - kSIZE = 128
 - kEXPONENTAL_VALUE = 0.7
 - 
 - gSENSOR_FOV = 60.0 / 180.0 * math.pi
 - 
 - 
 - def exponential(img, value):
 -   tmp = cv2.pow(img.astype(np.double), value)*(255.0/(255.0**value))
 -   return tmp.astype(np.uint8)
 - 
 - 
 - def mergeFrames(imgs, SIZE, overlap):
 -   tmp = np.zeros((SIZE, SIZE*2-overlap), dtype=np.uint16)
 -   tmp[:, :SIZE] = imgs[0]
 -   tmp[:, -SIZE:] += imgs[1]
 -   tmp[:, (SIZE-overlap): SIZE] = tmp[:, (SIZE-overlap): SIZE]/2
 -   
 -   tmp2 = np.zeros((SIZE, SIZE*2-overlap), dtype=np.uint16)
 -   tmp2[:, :SIZE] = imgs[2]
 -   tmp2[:, -SIZE:] += imgs[3]
 -   tmp2[:, (SIZE-overlap): SIZE] = tmp2[:, (SIZE-overlap): SIZE]/2
 -   
 -   merge = np.zeros((SIZE*2-overlap, SIZE*2-overlap), dtype=np.uint16)
 -   merge[:SIZE, :] = tmp
 -   merge[-SIZE:, :] += tmp2
 -   merge[(SIZE-overlap):SIZE, :] = merge[(SIZE-overlap):SIZE, :]/2
 -   #merge = exponential(merge, kEXPONENTAL_VALUE)
 -   
 -   return merge.astype(np.uint8)
 - 
 - 
 - class DataFuser(object):
 -   def __init__(self, sensor_dist):
 -     self.background_cnt = 0
 -     self.background_frame = np.zeros((4, 64))
 -     self.sensor_dist = sensor_dist
 - 
 -   def mergeFrame(self, frame, dist = None):
 -     if self.background_cnt < kBACKGROUND_NUM:
 -       self.background_frame += frame / kBACKGROUND_NUM
 -       self.background_cnt += 1
 -       return False
 - 
 -     frame = exponential(cv2.subtract(exponential(frame, kEXPONENTAL_VALUE),
 -                          exponential(self.background_frame, kEXPONENTAL_VALUE)),
 -                          0.3)
 -     print (([max(x) for x in frame]))
 -     imgs = [np.reshape(img, (8, 8)) for img in frame]
 -     imgs = [cv2.resize(img.astype(np.uint8), (kSIZE, kSIZE),
 -         interpolation = cv2.INTER_LINEAR) for img in imgs]
 -     try:
 -       overlap = int(kSIZE - 
 -           kSIZE * (self.sensor_dist / (2 * dist * math.tan(gSENSOR_FOV / 2))))
 -     except:
 -       overlap = 0
 -     if overlap < 0:
 -       overlap = 0
 -     overlap = 0
 -     
 -     return mergeFrames(imgs, kSIZE, overlap)
 - 
 -     if not dist:
 -       pass
 - 
 
 
  |