From 182d629792091d5f35bc1c320429e72f8976b3f6 Mon Sep 17 00:00:00 2001 From: Jarno Ralli Date: Mon, 7 Apr 2025 19:00:07 +0300 Subject: [PATCH 1/2] Added camera pose to homography example --- documentation/README.md | 2 + documentation/camera_pose_to_homography.ipynb | 552 ++++++++++++++++++ .../images/camera_pose_to_homography.png | Bin 0 -> 74862 bytes .../camera_pose_to_homography_generic.jpg | Bin 0 -> 102467 bytes 4 files changed, 554 insertions(+) create mode 100644 documentation/camera_pose_to_homography.ipynb create mode 100644 documentation/images/camera_pose_to_homography.png create mode 100644 documentation/images/camera_pose_to_homography_generic.jpg diff --git a/documentation/README.md b/documentation/README.md index f3033f3..e544744 100644 --- a/documentation/README.md +++ b/documentation/README.md @@ -8,4 +8,6 @@ This folder contains documentation and other examples. * This Jupyter notebook describes the pinhole camera model, and the relationship between H-FOV and focal length. * [fisheye_camera_models.ipynb](./fisheye_camera_models.ipynb) * This Jupyter notebook describes typical fisheye camera models. +* [camera_pose_to_homography.ipynb](./camera_pose_to_homography.ipynb) + * This Jupyter notebook describes homography between a plane defined in a world coordinate frame and the camera. diff --git a/documentation/camera_pose_to_homography.ipynb b/documentation/camera_pose_to_homography.ipynb new file mode 100644 index 0000000..40898ab --- /dev/null +++ b/documentation/camera_pose_to_homography.ipynb @@ -0,0 +1,552 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Camera Pose to Homography Conversion\n", + "\n", + "This Jupyter notebook demonstrates how to convert camera pose information, defined in a world coordinate system, into a homography mapping. The mapping relates a defined plane in the world coordinate system to the camera plane. We begin by explaining how to define a homography mapping for a plane aligned with the world coordinate system. Then, we address a more general case where the world coordinate frame and the plane of interest are not aligned. The motivation for the second case is as follows: imagine you need to map points between the camera plane and a plane defined in the world coordinate frame. However, this plane may not necessarily align with the world coordinate system. Such a mapping enables determining the 3D coordinates, within the plane, of a point observed in the camera." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Homography Between a Plane and the Camera\n", + "\n", + "In this case the plane $\\pi$ (the plane of interest) aligns with the XY-plane of the world coordinate system. Points in the image and the scene are related by a projective transformation. In Figure 1. $C$ is the camera centre, $x$ is the projection of the point $x_\\pi$ onto the camera plane. The point $x_\\pi$ lies on the XY-plane.\n", + "\n", + "
\n", + " \n", + "
Figure 1: Projective transformation from camera plane to a plane that aligns with the world coordinate frame.
\n", + "
\n", + "\n", + "The projective transformation $x=PX$ is a map from the world coordinate frame to a point in the image coordinate frame. We have placed the world coordinate frame so that the XY-plane aligns with the plane $\\pi$, meaning that the Z-coordinate is 0. Therefore we have\n", + "\n", + "$$\n", + "x=PX=\\begin{bmatrix}p_1 & p_2 & p_3 & p_4 \\end{bmatrix} \\begin{bmatrix}X \\\\ Y \\\\ 0 \\\\ 1 \\end{bmatrix} = \\begin{bmatrix}p_1 & p_2 & p_4 \\end{bmatrix} \\begin{bmatrix}X \\\\ Y \\\\ 1 \\end{bmatrix}\n", + "$$\n", + "\n", + ", and since the projection matrix $P$ of a calibrated camera is as follows\n", + "\n", + "$$\n", + "P = K\\begin{bmatrix}R & t\\end{bmatrix} = K\\begin{bmatrix}r_1 & r_2 & r_3 & t \\end{bmatrix}\n", + "$$\n", + "\n", + "Putting this information together, we have\n", + "\n", + "$$\n", + "x = K\\begin{bmatrix}r_1 & r_2 & r_3 & t \\end{bmatrix} \\begin{bmatrix}X \\\\ Y \\\\ 0 \\\\ 1 \\end{bmatrix} = K\\begin{bmatrix}r_1 & r_2 & t \\end{bmatrix} \\begin{bmatrix}X \\\\ Y \\\\ 1 \\end {bmatrix}\n", + "$$\n", + "\n", + "Since plane to plane mapping is a homography, we have the following\n", + "\n", + "$$\n", + "H = K\\begin{bmatrix}r_1 & r_2 & t \\end{bmatrix}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Homography Between a Plane Defined in the World Coordinate Frame and the Camera\n", + "\n", + "In this case we want to find the homography between any plane defined in the world coordinate frame and the camera plane. We have the following information:\n", + "\n", + "* Camera calibration matrix: $K$\n", + " * We have either calibrated the camera or obtained the camera calibration matrix using other means.\n", + "* Camera pose in the world coordinate system: $^cT_w$\n", + " * We know the camera pose in the world coordinate system.\n", + "* Plane parameters: $\\pi = \\begin{bmatrix}\\pi_1 & \\pi_2 & \\pi_3 & \\pi_4\\end{bmatrix}$\n", + " * We have a known plane defined in the world coordinate frame\n", + "\n", + "We expect that the direction vector $e_{w3}=\\begin{bmatrix}0 & 0 & 1\\end{bmatrix}$ of the world coordinate frame intersects with the plane $\\pi$. In Figure 2. we have the following, $O_c$ is the camera centre, $O_w$ is the centre of the world coordinate frame and $O_\\pi$ is the centre of the plane $\\pi$.\n", + "\n", + "
\n", + " \n", + "
Figure 2: Projective transformation from the camera to a plane that does not align with XY-plane of the world coordinate frame.\n", + "
\n", + "
\n", + "\n", + "We define the transformation $\\left(^cT_w\\right)^{-1} \\left({}^{\\pi}T_w\\right) \\left(^cT_{\\pi}\\right)$ so that it maps points defined in the camera coordinate frame back to the camera coordinate frame, or more formally\n", + "\n", + "$$\n", + "x_c^{\\prime} = \\left( \\left(^cT_w\\right)^{-1} \\left({}^{\\pi}T_w\\right) \\left(^cT_{\\pi}\\right) \\right) x_c = x_c\n", + "$$\n", + "\n", + "The transformations are as follows:\n", + "\n", + "* $^cT_w$ transformation matrix from the world coordinate frame to the camera coordinate frame\n", + "* ${}^{\\pi}T_w$ transformation matrix from the world coordinate frame to the coordinate frame defined in the plane $\\pi$\n", + "* $^cT_{\\pi}$ transformation matrix from the coordinate frame defined in the plane $\\pi$ to the camera coordinate frame\n", + "\n", + "The transformation ${}^{\\pi}T_w$ is defined as follows\n", + "\n", + "$$\n", + "{}^{\\pi}T_w = \n", + "\\begin{bmatrix}\n", + "{}^{\\pi}R_w & {}^{\\pi}t_w \\\\\n", + "0 & 1\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "Next steps are defining both the location and the orientation of the plane coordinate frame in the world coordinate frame.\n", + "\n", + "### Origin of the Plane $\\pi$\n", + "\n", + "The plane $\\pi$ is defined if the world coordinate frame using the plane equation that is define later on. In order for us to define a coordinate system on the plane itself, we need to define where the origin of the plane is. In order to simplify things, we place origin of the plane coordinate frame at the location where the Z-axis of the world coordinate frame, defined by $e_{w3}=\\begin{bmatrix}0 & 0 & 1\\end{bmatrix}$, intersects with the plane. Therefore, we parameterize a line in the direction of the coordinate vector $e_z=\\begin{bmatrix}0 & 0 & 1\\end{bmatrix}^t$ with respect to $t$ as follows\n", + "\n", + "$$\n", + "\\begin{bmatrix}X \\\\ Y \\\\ Z\\end{bmatrix} = O_w + e_z t = \\begin{bmatrix}o_x \\\\ o_y \\\\ o_z\\end{bmatrix} + \\begin{bmatrix}0 \\\\ 0 \\\\ 1\\end{bmatrix} t = \\begin{bmatrix}0 \\\\ 0 \\\\ 1\\end{bmatrix} t\n", + "$$\n", + "\n", + ", where $O_w$ is the origin of the world coordinate system. The plane equation is as follows:\n", + "\n", + "$$\n", + "\\pi_1 X + \\pi_2 Y + \\pi_3 Z + \\pi_4 = 0\n", + "$$\n", + "\n", + "Next we plug in the coordinates from the parameterized line equation and we get\n", + "\n", + "$$\n", + "t = -\\dfrac{\\pi_4}{\\pi_3}\n", + "$$\n", + "\n", + "$t$ is the length of the vector in the direction of $e_z$, and that is where the we place the origin of the plane $\\pi$.\n", + "\n", + "### Orientation of the Coordinate System on the Plane $\\pi$\n", + "\n", + "We want to align orientation of the plane coordinate system so that the Z-axis is aligned with the normal $n$ of the plane, while keeping X- and Y- directions aligned with the world coordinate system. Normal $n$ of a plane\n", + "\n", + "$$\n", + "\\pi = \\begin{bmatrix}\\pi_1 & \\pi_2 & \\pi_3 & \\pi_4\\end{bmatrix} \\begin{bmatrix} X \\\\ Y \\\\ Z \\\\ 1 \\end{bmatrix}\n", + "$$\n", + "\n", + "is\n", + "\n", + "$$\n", + "n = \\begin{bmatrix}\\pi_1 & \\pi_2 & \\pi_3\\end{bmatrix}\n", + "$$\n", + "\n", + "Basis vectors of the world coordinate system are\n", + "\n", + "$$\n", + "e_{w1} = \\begin{bmatrix}1\\\\0\\\\0\\end{bmatrix},\\quad e_{w2} = \\begin{bmatrix}0\\\\1\\\\0\\end{bmatrix},\\quad e_{w3} = \\begin{bmatrix}0\\\\0\\\\1\\end{bmatrix}\n", + "$$\n", + "\n", + "We define the basis vectors $e_{p1}$, $e_{p2}$ and $e_{p3}$ of the plane coordinate system using the plane normal vector $n$ and the basis vector $e_{w2}$, so \n", + "that the basis vector $e_{p3}$ it aligns with $n$\n", + "\n", + "$$\n", + "e_{p3} = \\dfrac{n}{||n||}\n", + "$$\n", + "\n", + "Then we define the basis vector $e_{p1}$ to be perpendicular to $e_{w2}$ and $e_{p3}$\n", + "\n", + "$$\n", + "e_{p1} = \\dfrac{e_{w2} \\times n}{||e_{w2} \\times n||}\n", + "$$\n", + "\n", + ", and finally the basis vector $e_{p2}$ is perpendicular to both $ep_1$ and $e_{p3}$\n", + "\n", + "$$\n", + "e_{p2} = \\dfrac{e_{p3} \\times e_{p1}}{||e_{p3} \\times e_{p1}||}\n", + "$$\n", + "\n", + "Thus, orientation of the plane coordinate system is\n", + "\n", + "$$\n", + "{}^{\\pi}R_w = \\begin{bmatrix}e_{p1} && e_{p2} && e_{p3}\\end{bmatrix}\n", + "$$\n", + "\n", + "### Combined Transformations\n", + "\n", + "The transformation from the plane $\\pi$ to the camera coordinate frame is defined as follows\n", + "\n", + "$$\n", + "{}^{c}T_{\\pi} = \n", + "\\begin{bmatrix}\n", + "{}^{c}R_{\\pi} & {}^{c}t_{\\pi} \\\\\n", + "0 & 1\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + ", where the rotation matrix and the translation vector are defined as follows\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "{}^{c}R_{\\pi} &= {}^{c}R_{w} \\left({}^{\\pi}R_{w} \\right)^{-1} \\\\\n", + "{}^{c}t_{\\pi} &= {}^{c}t_{w} + {}^{c}R_{w} {}^{w}t_{\\pi}\n", + "\\end{aligned}\n", + "$$\n", + "\n", + ", and\n", + "\n", + "$$\n", + "{}^{w}t_{\\pi} = - \\left({}^{\\pi}R_{w} \\right)^{-1} {}^{\\pi}t_{w}\n", + "$$\n", + "\n", + "### Homography\n", + "\n", + "When we calculate the homography\n", + "\n", + "$$\n", + "H = K\\begin{bmatrix}r_1 & r_2 & t \\end{bmatrix}\n", + "$$\n", + "\n", + "$r_1$ and $r_2$ are from ${}^{c}R_{\\pi}$ and $t$ is ${}^{c}t_{\\pi}$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Testing\n", + "\n", + "In the following we create a test case for the homography mapping. World coordinate system origin is at $\\left(0,0,0\\right)$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_camera_library.utils import rotation\n", + "import numpy as np\n", + "import math\n", + "import open3d as o3d" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plane\n", + "\n", + "The equation of a plane with normal vector $n=(a,b,c)$ through the point $x_0=(x_0, y_0, z_0)$ is $n(x-x_0) = 0$. This gives the equation of a plane $ax + by + cz + d = 0$, where $d=-ax_0-by_0-cz_0$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Plane normal\n", + "n = np.array([0, 0, 1]).reshape(3, 1)\n", + "R = rotation(rot_x=0, rot_y=math.radians(10), rot_z=0)\n", + "n = R@n\n", + "\n", + "# Plane origin\n", + "O_p = np.array([0, 0, -2]).reshape(3,1)\n", + "d = np.sum(-n*O_p)\n", + "\n", + "# Plane equation\n", + "plane_equation = np.append(n, d)\n", + "\n", + "print(f\"Plane normal vector:\\n{n}\")\n", + "print(f\"Plane origin:\\n{O_p}\")\n", + "print(f\"Plane d-parameter:\\n{d}\")\n", + "print(f\"Plane equation:\\n{plane_equation}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Intersection of the world coordinate system with the plane\n", + "t = -plane_equation[-1]/plane_equation[-2]\n", + "intersection = np.array([0., 0., 1.]).reshape(3,1) * t\n", + "print(f\"Intersection of the world coordinate frame with the plane:\\n{intersection}\")\n", + "\n", + "# Orientation of the plane coordinate system\n", + "ew_1 = np.array([1., 0., 0.])\n", + "ew_2 = np.array([0., 1., 0.])\n", + "\n", + "ep_3 = n/np.linalg.norm(n)\n", + "ep_1 = np.cross(ew_2.flatten(), ep_3.flatten())\n", + "ep_1 /= np.linalg.norm(ep_1)\n", + "ep_2 = np.cross(ep_3.flatten(), ew_1.flatten())\n", + "ep_2 /= np.linalg.norm(ep_1)\n", + "\n", + "# R_w2p and t_w2p transform points from the world to plane coordinate frame\n", + "R_w2p = np.hstack((ep_1.reshape(3,1), ep_2.reshape(3,1), ep_3.reshape(3,1))).T\n", + "t_w2p = -R_w2p.T @ intersection.copy()\n", + "\n", + "print(f\"R_w2p:\\n{R_w2p}\")\n", + "print(f\"t_w2p:\\n{t_w2p}\")\n", + "\n", + "# R_p2w and t_p2w transform points from the plane to world coordinate frame\n", + "t_p2w = -R_w2p.T @ t_w2p\n", + "R_p2w = R_w2p.T\n", + "print(f\"R_p2w:\\n{R_p2w}\")\n", + "print(f\"t_p2w:\\n{t_p2w}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test Transformations\n", + "\n", + "Test the world to plane to camera transformations:\n", + "1. First transfer the point of interest from world to plane and then from plane to camera coordinate frame\n", + "2. Calculate the combined transformation world -> camera\n", + "\n", + "Both transformations should produce same results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Point of interest in the world coordinate frame\n", + "poi_w = np.array([0., 0., 0.]).reshape(3, 1)\n", + "\n", + "# Point of interest in the plane coordinate frame\n", + "poi_p = R_w2p @ poi_w + t_w2p\n", + "\n", + "print(f\"poi_w:\\n{poi_w}\")\n", + "print(f\"poi_p:\\n{poi_p}\")\n", + "\n", + "# R_w2c and t_w2c transform coordinates from the world coordinate frame to the camera coordinate frame\n", + "R_w2c = np.array([[0., 1., 0.], [0., 0., -1.], [-1., 0., 0.]]).reshape(3,3)\n", + "t_w2c = np.array([0., 0., 3.]).reshape(3,1)\n", + "print(f\"R_w2c:\\n{R_w2c}\")\n", + "print(f\"t_w2c:\\n{t_w2c}\")\n", + "\n", + "# R_p2c and t_p2c transform coordinates from the plane coordinate frame to the camera coordinate frame\n", + "R_p2c = R_w2c @ R_w2p.T\n", + "t_p2c = t_w2c - R_w2c @ R_w2p.T @ t_w2p\n", + "\n", + "# Transfer the poi_w to the camera coordinate frame\n", + "poi_c1 = R_w2c @ poi_w + t_w2c\n", + "\n", + "# Transfer the poi_p to the camera coordinate frame (poi_p is the same as poi_w but in the plane doordinate system)\n", + "poi_c2 = R_p2c @ poi_p + t_p2c\n", + "\n", + "# poi_c1 and poi_c2 should have exactly the same values\n", + "print(f\"poi_w -> poi_c1: {poi_w.flatten()} -> {poi_c1.flatten()}\")\n", + "print(f\"poi_p -> poi_c2: {poi_p.flatten()} -> {poi_c2.flatten()}\")\n", + "\n", + "# assert that they actually have the same values using assert_allclose\n", + "np.testing.assert_allclose(poi_c1, poi_c2, rtol=1e-5, atol=1e-15)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test Projection Using Camera Calibration Matrix K and Homography\n", + "\n", + "We project the point of interest directly using the camera calibration matrix K and the homography matrix H. Both should produce the same results. Homography is defined as follows:\n", + "\n", + "$$\n", + "H = K \\begin{bmatrix}r_1 & r_2 & t_{p2c}\\end{bmatrix}\n", + "$$\n", + "\n", + ", where\n", + "\n", + "$$\n", + "R_{p2c} = \\begin{bmatrix}r_1 & r_2 & r_3\\end{bmatrix}\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Point of interest defined in the plane coordinate frame\n", + "poi2_p = np.array([1., 0.5, 0.]).reshape(3,1)\n", + "print(f\"Point of interest poi2_p in the plane coordinate frame:\\n{poi2_p}\")\n", + "\n", + "# Transform poi2_p to the camera coordinate frame\n", + "poi2_c = R_p2c @ poi2_p + t_p2c\n", + "\n", + "# Camera matrix\n", + "K = np.array([[100., 0., 0.], [0., 100., 0.], [0., 0., 1.]]).reshape(3,3)\n", + "\n", + "# Homography from plane to the camera\n", + "H = K @ np.hstack((R_p2c[:, :2].reshape(3, 2), t_p2c))\n", + "\n", + "# Project the point to the camera using camera calibration matrix K\n", + "uv1 = K @ poi2_c\n", + "uv1 /= uv1[-1, -1]\n", + "print(f\"poi2_c projected to the camera using camera matrix K, uv1:\\n{uv1}\")\n", + "\n", + "# Project the point to the camera using homography H\n", + "poi2_p_homog = poi2_p[:2].copy()\n", + "poi2_p_homog = np.append(poi2_p_homog, 1.).reshape(3,1)\n", + "uv2 = H @ poi2_p_homog\n", + "uv2 /= uv2[-1, -1]\n", + "print(f\"poi2_p projected to the camera using homography H, uv2:\\n{uv2}\")\n", + "\n", + "# Assert that uv1 and uv2 are equal (close)\n", + "np.testing.assert_allclose(uv1, uv2, rtol=1e-5, atol=1e-15)\n", + "\n", + "# Backproject the point to the plane, this should have the same XY-coordinates as poi2_p\n", + "uv_backprojected = np.linalg.inv(H)@uv2\n", + "uv_backprojected /= uv_backprojected[-1, -1]\n", + "print(f\"uv2 projected to the plane using inverse of homography H:\\n{uv_backprojected}\")\n", + "\n", + "# Assert that the XY-coordinates are close\n", + "np.testing.assert_allclose(poi2_p[:2], uv_backprojected[:2], rtol=1e-5, atol=1e-10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Intersection Between a Camera Unit Vector and the Plane\n", + "\n", + "Here we calculate where the back projection of the $uv1$, in the camera coordinate frame, intersects with the plane. Since $uv1$ is projection of $poi2$, these should both produce the same point." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Vector in the direction of uv1 in the camera coordinate frame\n", + "vect_c = np.linalg.inv(K) @ uv1\n", + "vect_c /= np.linalg.norm(vect_c)\n", + "\n", + "R_c2w = R_w2c.T\n", + "t_c2w = -R_w2c.T @ t_w2c\n", + "\n", + "# Vector in the direction of uv1 in the world coordinate frame\n", + "vect_w = R_c2w @ vect_c\n", + "vect_w /= np.linalg.norm(vect_w)\n", + "\n", + "# From the plane equation\n", + "d = plane_equation[-1]\n", + "n = plane_equation[:3]\n", + "length_vect = -(d+np.sum((n.flatten()*t_c2w.flatten()))) / (np.sum(n.flatten()*vect_w.flatten()))\n", + "plane_intersection = t_c2w + length_vect*vect_w\n", + "print(f\"Length of the vector: {length_vect}\")\n", + "print(f\"Intersection:\\n{t_c2w + length_vect*vect_w}\")\n", + "\n", + "# Convert poi2_p to world coordinates\n", + "poi2_w = R_p2w @ poi2_p + t_p2w\n", + "print(f\"poi2_p:\\n{poi2_p}\")\n", + "print(f\"poi2_p in world coordinate frame, poi2_w:\\n{poi2_w}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to create a plane mesh with rotation and translation, visible from both sides\n", + "def create_plane(center, normal, width, height, R, t):\n", + " # Calculate two orthogonal vectors in the plane\n", + " if np.allclose(normal, [0, 0, 1]):\n", + " v1 = np.array([1, 0, 0])\n", + " else:\n", + " v1 = np.cross(normal, [0, 0, 1])\n", + " v1 /= np.linalg.norm(v1)\n", + "\n", + " v2 = np.cross(normal, v1)\n", + " v2 /= np.linalg.norm(v2)\n", + "\n", + " # Calculate the four corners of the plane\n", + " half_width = width / 2\n", + " half_height = height / 2\n", + " corners = np.array([\n", + " center + half_width * v1 + half_height * v2,\n", + " center - half_width * v1 + half_height * v2,\n", + " center - half_width * v1 - half_height * v2,\n", + " center + half_width * v1 - half_height * v2,\n", + " ])\n", + "\n", + " # Apply rotation and translation to the corners\n", + " corners = (R @ corners.T).T + t.reshape(1, 3)\n", + "\n", + " # Create the mesh\n", + " vertices = o3d.utility.Vector3dVector(corners)\n", + " triangles = o3d.utility.Vector3iVector([[0, 1, 2], [2, 3, 0]])\n", + " mesh = o3d.geometry.TriangleMesh()\n", + " mesh.vertices = vertices\n", + " mesh.triangles = triangles\n", + " mesh.compute_vertex_normals()\n", + "\n", + " # Add colors to the mesh for better visualization\n", + " mesh.paint_uniform_color([0.7, 0.7, 0.7]) # Light gray color\n", + "\n", + " return mesh\n", + "\n", + "# Function to create a sphere\n", + "def create_sphere(position, radius, color):\n", + " sphere = o3d.geometry.TriangleMesh.create_sphere(radius=radius)\n", + " sphere.compute_vertex_normals()\n", + " sphere.paint_uniform_color(color)\n", + " sphere.translate(position)\n", + " return sphere" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create visualization for the world coordinate frame\n", + "world_coordinate_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.5, origin=[0, 0, 0])\n", + "\n", + "# Create visualization for the plane coordinate frame\n", + "plane_coordinate_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.5, origin=O_p)\n", + "plane_coordinate_frame.rotate(R, center=O_p)\n", + "\n", + "# Create visualization for the camera coordinate frame\n", + "camera_coordinate_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.5, origin=t_c2w)\n", + "camera_coordinate_frame.rotate(R_c2w, center=t_c2w)\n", + "\n", + "# Create the plane\n", + "plane = create_plane(center=O_p.flatten(), normal=n, width=2., height=2., R=np.eye(3), t=np.array([0,0,0]))\n", + "\n", + "# Shows POIs -> these should overlap, we should see only the red ball\n", + "poi = create_sphere(plane_intersection, 0.02, [0.0, 1.0, 0.0])\n", + "poi2 = create_sphere(poi2_w, 0.02, [1.0, 0.0, 0.0])\n", + "\n", + "# Draw everything\n", + "o3d.visualization.draw_geometries([world_coordinate_frame, plane, plane_coordinate_frame, camera_coordinate_frame, poi, poi2])\n", + "\n", + "print(\"Red is the X-axis\")\n", + "print(\"Green is the Y-axis\")\n", + "print(\"Blue is the Z-axis\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "3d-computer-vision", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/documentation/images/camera_pose_to_homography.png b/documentation/images/camera_pose_to_homography.png new file mode 100644 index 0000000000000000000000000000000000000000..c545878a2c5f44cbf138f8a353e04c34a0902f9c GIT binary patch literal 74862 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

mX1?B`3ySkTR1&AId9M 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 literal 0 HcmV?d00001 diff --git a/documentation/images/camera_pose_to_homography_generic.jpg b/documentation/images/camera_pose_to_homography_generic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c0e1270365a7941ab5503df871e3756312cd0bf GIT binary patch literal 102467 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 `DBYoS2arV8S|V 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 Dz%~mm literal 0 HcmV?d00001 From 64adcb11a9407e7e8afb27469a61b5eb1a6e3b71 Mon Sep 17 00:00:00 2001 From: Jarno Ralli Date: Mon, 7 Apr 2025 19:10:48 +0300 Subject: [PATCH 2/2] Executed version of the camera pose to homography notebook --- documentation/camera_pose_to_homography.ipynb | 164 ++++++++++++++++-- 1 file changed, 149 insertions(+), 15 deletions(-) diff --git a/documentation/camera_pose_to_homography.ipynb b/documentation/camera_pose_to_homography.ipynb index 40898ab..92fef5e 100644 --- a/documentation/camera_pose_to_homography.ipynb +++ b/documentation/camera_pose_to_homography.ipynb @@ -210,9 +210,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Jupyter environment detected. Enabling Open3D WebVisualizer.\n", + "[Open3D INFO] WebRTC GUI backend enabled.\n", + "[Open3D INFO] WebRTCWindowSystem: HTTP handshake server disabled.\n" + ] + } + ], "source": [ "from python_camera_library.utils import rotation\n", "import numpy as np\n", @@ -231,9 +241,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Plane normal vector:\n", + "[[0.17364818]\n", + " [0. ]\n", + " [0.98480775]]\n", + "Plane origin:\n", + "[[ 0]\n", + " [ 0]\n", + " [-2]]\n", + "Plane d-parameter:\n", + "1.969615506024416\n", + "Plane equation:\n", + "[0.17364818 0. 0.98480775 1.96961551]\n" + ] + } + ], "source": [ "# Plane normal\n", "n = np.array([0, 0, 1]).reshape(3, 1)\n", @@ -255,9 +284,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Intersection of the world coordinate frame with the plane:\n", + "[[-0.]\n", + " [-0.]\n", + " [-2.]]\n", + "R_w2p:\n", + "[[ 0.98480775 0. -0.17364818]\n", + " [ 0. 0.98480775 0. ]\n", + " [ 0.17364818 0. 0.98480775]]\n", + "t_w2p:\n", + "[[0.34729636]\n", + " [0. ]\n", + " [1.96961551]]\n", + "R_p2w:\n", + "[[ 0.98480775 0. 0.17364818]\n", + " [ 0. 0.98480775 0. ]\n", + " [-0.17364818 0. 0.98480775]]\n", + "t_p2w:\n", + "[[-0.68404029]\n", + " [ 0. ]\n", + " [-1.87938524]]\n" + ] + } + ], "source": [ "# Intersection of the world coordinate system with the plane\n", "t = -plane_equation[-1]/plane_equation[-2]\n", @@ -303,9 +359,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "poi_w:\n", + "[[0.]\n", + " [0.]\n", + " [0.]]\n", + "poi_p:\n", + "[[0.34729636]\n", + " [0. ]\n", + " [1.96961551]]\n", + "R_w2c:\n", + "[[ 0. 1. 0.]\n", + " [ 0. 0. -1.]\n", + " [-1. 0. 0.]]\n", + "t_w2c:\n", + "[[0.]\n", + " [0.]\n", + " [3.]]\n", + "poi_w -> poi_c1: [0. 0. 0.] -> [0. 0. 3.]\n", + "poi_p -> poi_c2: [0.34729636 0. 1.96961551] -> [0. 0. 3.]\n" + ] + } + ], "source": [ "# Point of interest in the world coordinate frame\n", "poi_w = np.array([0., 0., 0.]).reshape(3, 1)\n", @@ -361,9 +442,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Point of interest poi2_p in the plane coordinate frame:\n", + "[[1. ]\n", + " [0.5]\n", + " [0. ]]\n", + "poi2_c projected to the camera using camera matrix K, uv1:\n", + "[[18.24236595]\n", + " [76.05989457]\n", + " [ 1. ]]\n", + "poi2_p projected to the camera using homography H, uv2:\n", + "[[18.24236595]\n", + " [76.05989457]\n", + " [ 1. ]]\n", + "uv2 projected to the plane using inverse of homography H:\n", + "[[1. ]\n", + " [0.5]\n", + " [1. ]]\n" + ] + } + ], "source": [ "# Point of interest defined in the plane coordinate frame\n", "poi2_p = np.array([1., 0.5, 0.]).reshape(3,1)\n", @@ -413,9 +517,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Length of the vector: 3.4268446227929985\n", + "Intersection:\n", + "[[ 0.30076747]\n", + " [ 0.49240388]\n", + " [-2.05303342]]\n", + "poi2_p:\n", + "[[1. ]\n", + " [0.5]\n", + " [0. ]]\n", + "poi2_p in world coordinate frame, poi2_w:\n", + "[[ 0.30076747]\n", + " [ 0.49240388]\n", + " [-2.05303342]]\n" + ] + } + ], "source": [ "# Vector in the direction of uv1 in the camera coordinate frame\n", "vect_c = np.linalg.inv(K) @ uv1\n", @@ -444,7 +568,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -497,9 +621,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Red is the X-axis\n", + "Green is the Y-axis\n", + "Blue is the Z-axis\n" + ] + } + ], "source": [ "# Create visualization for the world coordinate frame\n", "world_coordinate_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.5, origin=[0, 0, 0])\n",