def _get_cameramodel(self, noise=True):
        params = self.cameraparams
        cameramodel = CameraModel(self.resolution, params)
        cameramodel.update_point_cloud(self.mod.points)
        points2d = cameramodel.points2d

        if noise:
            points2d = self._add_noise(points2d)
            points2d = self._do_missclassifcation(points2d)
            cameramodel.points2d = points2d
        return cameramodel
Beispiel #2
0
 def __init__(self, resolution, points2d, points3d, logger=None):
     self._points2d = points2d
     self._points3d = points3d
     self._points2d_inliers = []
     self._points3d_inliers = []
     self._inliers = []
     self._resolution = resolution
     self._reduce_dist_param = False
     self._cm = CameraModel(resolution)
     self._max_iter = 5000
     if logger == None:
         self.logger = logging.getLogger()
     else:
         self.logger = logger
Beispiel #3
0
def run_application(args):
    poc = ProofOfConcept(args)

    image = poc.get_image()
    plt.imshow(image)

    cameraparams = poc.cameraparams
    cameraparams_est, res, cme = poc.estimate()

    print("Cost (reduced data): " + str(res.cost))
    print("Optimality, gradient value (reduced data): " + str(res.optimality))
    inliers = np.array(cme._inliers)
    points = np.array(poc.mod.points)
    print("Inliers in percent: " +
          str(100.0 * inliers.shape[0] / points.shape[0]))

    print(
        array_string([
            " ", "fx", "fy", "cx", "cy", "thetax", "thetay", "thetaz", "tx",
            "ty", "tz", "k1", "k2", "k3", "p1", "p2"
        ], 8))
    print("shuld:  " + cameraparams.get_string(8))
    print("is:     " + cameraparams_est.get_string(8))

    dist = np.array(cameraparams.get_as_array()) - np.array(
        cameraparams_est.get_as_array())

    print("diff:   " + array_string(np.round(dist, 2), 8))
    print("Tot. diff: {}".format(np.linalg.norm(dist)))

    cm_est = CameraModel(poc.resolution, cameraparams_est)
    cm_est.update_point_cloud(poc.mod.points)
    image_est = cm_est.get_image()

    image1 = np.zeros((poc.resolution[0], poc.resolution[1], 3))
    image2 = np.zeros((poc.resolution[0], poc.resolution[1], 3))
    image1[:, :, 2] = image_est
    image2[:, :, 1] = image
    kernel = np.ones((3, 3), np.uint8)
    diff_img = image1 + image2
    diff_img = cv2.dilate(diff_img, kernel, iterations=1)

    cv2.imwrite("diff_img.png", diff_img * 255)
    plt.figure()
    plt.imshow(diff_img)
    plt.show()