def analyze(self):
        camera_dock = Client("::1", 3288, "camera_reference_image")

        acquired_images = []
        try:
            timeout_in_seconds = 60
            acquired_images = self.camera.get_acquired_data(timeout_in_seconds)
        except Exception as e:
            logger.error(e)
            logger.error("Camera acquisition timed out")
            camera_dock.enable_button()
            camera_dock.close_rpc()
            self.close_camera()
            return

        image_region = self.image_region
        x_pixels = int(
            (image_region[3] - image_region[2] + 1) / image_region[0])
        y_pixels = int(
            (image_region[5] - image_region[4] + 1) / image_region[1])
        images = np.reshape(acquired_images, (self.N, y_pixels, x_pixels))
        image = np.average(images, axis=0)
        self.close_camera()
        camera_dock.plot(image, image_region)
        camera_dock.enable_button()
        camera_dock.close_rpc()