def image(self): print("Calculating hologram") image = self.image_holo image = subtract(image, self.image_ref) image = subtract(image, self.image_obj) if self.equalize_image: image = equalize(image) return image
def processor(t_sigma, t_level, equalize_level): t_sigma = sigmoid(t_sigma) * 20 + 1 t_level = sigmoid(t_level) equalize_level = sigmoid(equalize_level) channels = [] for ndim in range(3): channel = image[:, :, ndim] local_context = gaussian_filter(channel, t_sigma) # local_context = median_filter(channel, t_sigma) tonemapped = channel - local_context * t_level tonemapped = tonemapped.astype(int) tonemapped /= 1 - t_level equalized = equalize(tonemapped) * equalize_level equalized += tonemapped * (1 - equalize_level) channels.append(equalized) final = np.array(channels).swapaxes(0, 1).swapaxes(1, 2) final = normalize(final).astype(np.uint8) return final
def main(): pygame.init() camera.init() pygame.surfarray.use_arraytype("numpy") cams = camera.list_cameras() cam = camera.Camera(cams[0], (360, 296)) cam = camera.Camera(cams[0], (640, 480)) cam.start() fps = 25.0 window = pygame.display.set_mode((640, 480), 0, 8) pygame.display.set_caption("Video") screen = pygame.display.get_surface() screen.set_palette([(i, i, i) for i in range(256)]) print("Starting main loop") pea_list = [ ("Spectrum", get_spectrum, get_equalized), ("Automask", apply_mask, get_normalized), ("Propagation", propagate, get_normalized), ("Reconstruction", reconstruct, get_complex_view), ] set_array = False set_equalize = False set_normalize = True set_pea = False pea_level = 1 distance = 5 comp_view = "phase" while True: events = pygame.event.get() for event in events: if event.type == pygame.QUIT: return elif event.type == pygame.KEYDOWN: if (event.key == pygame.K_q): return # IMAGE PROCESSING elif (event.key == pygame.K_a): set_array = not set_array print("Converting to array: %s" % set_array) elif (event.key == pygame.K_n): set_normalize = not set_normalize print("Normalize: %s" % set_normalize) elif (event.key == pygame.K_e): set_equalize = not set_equalize print("Equalize: %s" % set_equalize) # PEA elif (event.key == pygame.K_p): set_pea = not set_pea print("PEA processing set: %s" % set_pea) print("Setted pea to level %d, %s." % ( pea_level, pea_list[pea_level - 1][0])) elif (event.key == pygame.K_PAGEUP): pea_level -= 1 pea_level = max(pea_level, 1) print("Setted pea to level %d, %s." % ( pea_level, pea_list[pea_level - 1][0])) elif (event.key == pygame.K_PAGEDOWN): pea_level += 1 pea_level = min(pea_level, len(pea_list)) print("Setted pea to level %d, %s." % ( pea_level, pea_list[pea_level - 1][0])) elif (event.key == pygame.K_TAB): comp_view = "phase" if comp_view != "phase" else "mod" print("PEA complex viewer set to: %s" % comp_view) # FOCUS DISTANCE elif (event.key == pygame.K_DOWN): distance += 5 print("Distance: %.1f" % distance) elif (event.key == pygame.K_UP): distance -= 5 print("Distance: %.1f" % distance) elif (event.key == pygame.K_LEFT): distance -= .5 print("Distance: %.1f" % distance) elif (event.key == pygame.K_RIGHT): distance += .5 print("Distance: %.1f" % distance) # FULSCREEN elif (event.key == pygame.K_f): pygame.display.toggle_fullscreen() # CAPTURE elif (event.key == pygame.K_c): filename = save_raw(cam) print("Raw image saved to: %s" % filename) image = cam.get_image() if set_array: array = pygame.surfarray.array2d(image) if array.ndim > 2: array = round(array.mean(-1)) # array = array[:,:,0] # red # array = array[:,:,0] # green # array = array[:,:,0] # blue if set_equalize: array = equalize(array).astype(int) elif set_normalize: array = normalize(array) pygame.surfarray.blit_array(screen, array) elif set_pea: array = pygame.surfarray.array2d(image) if array.ndim > 2: array = round(array.mean(-1)) # array = array[:,:,0] # red # array = array[:,:,0] # green # array = array[:,:,0] # blue pea_algs = pea_list[:pea_level] pea_rep = pea_algs[-1][-1] for alg in pea_algs: try: array = alg[1](array, distance=distance) except: print("W: skipped framme's: %s" % alg[0]) array = pea_rep(array, comp_view=comp_view).astype(int) pygame.surfarray.blit_array(screen, array) else: screen.blit(image, (0,0)) pygame.display.flip() pygame.time.delay(int(1000./fps))
def get_equalized(image, **kw): return equalize(image)
def main(): pygame.init() camera.init() pygame.surfarray.use_arraytype("numpy") cams = camera.list_cameras() cam = camera.Camera(cams[0], (360, 296)) cam = camera.Camera(cams[0], (640, 480)) cam.start() fps = 25.0 window = pygame.display.set_mode((640, 480), 0, 8) pygame.display.set_caption("Video") screen = pygame.display.get_surface() screen.set_palette([(i, i, i) for i in range(256)]) print("Starting main loop") pea_list = [ ("Spectrum", get_spectrum, get_equalized), ("Automask", apply_mask, get_normalized), ("Propagation", propagate, get_normalized), ("Reconstruction", reconstruct, get_complex_view), ] set_array = False set_equalize = False set_normalize = True set_pea = False pea_level = 1 distance = 5 comp_view = "phase" while True: events = pygame.event.get() for event in events: if event.type == pygame.QUIT: return elif event.type == pygame.KEYDOWN: if event.key == pygame.K_q: return # IMAGE PROCESSING elif event.key == pygame.K_a: set_array = not set_array print("Converting to array: %s" % set_array) elif event.key == pygame.K_n: set_normalize = not set_normalize print("Normalize: %s" % set_normalize) elif event.key == pygame.K_e: set_equalize = not set_equalize print("Equalize: %s" % set_equalize) # PEA elif event.key == pygame.K_p: set_pea = not set_pea print("PEA processing set: %s" % set_pea) print("Setted pea to level %d, %s." % (pea_level, pea_list[pea_level - 1][0])) elif event.key == pygame.K_PAGEUP: pea_level -= 1 pea_level = max(pea_level, 1) print("Setted pea to level %d, %s." % (pea_level, pea_list[pea_level - 1][0])) elif event.key == pygame.K_PAGEDOWN: pea_level += 1 pea_level = min(pea_level, len(pea_list)) print("Setted pea to level %d, %s." % (pea_level, pea_list[pea_level - 1][0])) elif event.key == pygame.K_TAB: comp_view = "phase" if comp_view != "phase" else "mod" print("PEA complex viewer set to: %s" % comp_view) # FOCUS DISTANCE elif event.key == pygame.K_DOWN: distance += 5 print("Distance: %.1f" % distance) elif event.key == pygame.K_UP: distance -= 5 print("Distance: %.1f" % distance) elif event.key == pygame.K_LEFT: distance -= 0.5 print("Distance: %.1f" % distance) elif event.key == pygame.K_RIGHT: distance += 0.5 print("Distance: %.1f" % distance) # FULSCREEN elif event.key == pygame.K_f: pygame.display.toggle_fullscreen() # CAPTURE elif event.key == pygame.K_c: filename = save_raw(cam) print("Raw image saved to: %s" % filename) image = cam.get_image() if set_array: array = pygame.surfarray.array2d(image) if array.ndim > 2: array = round(array.mean(-1)) # array = array[:,:,0] # red # array = array[:,:,0] # green # array = array[:,:,0] # blue if set_equalize: array = equalize(array).astype(int) elif set_normalize: array = normalize(array) pygame.surfarray.blit_array(screen, array) elif set_pea: array = pygame.surfarray.array2d(image) if array.ndim > 2: array = round(array.mean(-1)) # array = array[:,:,0] # red # array = array[:,:,0] # green # array = array[:,:,0] # blue pea_algs = pea_list[:pea_level] pea_rep = pea_algs[-1][-1] for alg in pea_algs: try: array = alg[1](array, distance=distance) except: print("W: skipped framme's: %s" % alg[0]) array = pea_rep(array, comp_view=comp_view).astype(int) pygame.surfarray.blit_array(screen, array) else: screen.blit(image, (0, 0)) pygame.display.flip() pygame.time.delay(int(1000.0 / fps))