-
2021-01-15 20:54:26
Contents
Preface
在涉及计算机视觉的许多领域都离不开世界坐标系、相机坐标系、图像坐标系以及像素坐标系,只有理解了这些才能对获取的图像进行准确的分析。
四个坐标系如下图所示
世界坐标系(World Coordinates)
由于摄像机可安放在环境中的任意位置,在环境中选择一个基准坐标系来描述摄像机的位置,并用它描述环境中任何物体的位置,该坐标系称为世界坐标系。
相机坐标系(Camera Coordinates)
相机坐标系也叫视点坐标系(Eye Coordinates)视点坐标是以视点(光心)为原点,以视线的方向为Z+轴正方向的坐标系。世界坐标系到相机坐标系只涉及旋转和平移,所以是刚体变换,不涉及形变。
绕Z轴旋转的坐标关系为
所以从世界坐标系到相机坐标系的转换关系如下所示:
[ X c Y c Z c ] = R ∗ [ X w Y w Z w ] + T \begin{bmatrix}X_c\\Y_c\\Z_c\\\end{bmatrix}= R* \begin{bmatrix}X_w\\Y_w\\Z_w\\\end{bmatrix}+T ⎣⎡XcYcZc⎦⎤=R∗⎣⎡XwYwZw⎦⎤+T
用齐次坐标表示
[ X c Y c Z c 1 ] = [ R T 0 → 1 ] ∗ [ X w Y w Z w 1 ] , R : 3 ∗ 3 , T : 3 ∗ 1 \begin{bmatrix}X_c\\Y_c\\Z_c\\1\\\end{bmatrix}= \begin{bmatrix}R&T\\\mathop{0}\limits^{\rightarrow}&1\end{bmatrix} *\begin{bmatrix}X_w\\Y_w\\Z_w\\1\\\end{bmatrix},R:3*3,T:3*1 ⎣⎢⎢⎡XcYcZc1⎦⎥⎥⎤=[R0→T1]∗⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤,R:3∗3,T:3∗1图像坐标系(Image coordinate)
从相机坐标系到图像坐标系,属于透视投影关系,从3D转换到2D。如图所示此时相机坐标与图像坐标的关系表示为
像素坐标系(Pixel coordinate )
以图像左上角为原点建立以像素为单位的直接坐标系u-v。像素的横坐标u与纵坐标v分别是在其图像数组中所在的列数与所在行数。(在OpenCV中u对应x,v对应y)图像坐标到像素坐标如下图所示
所以世界坐标系到像素坐标系的变换为
Z c [ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ R T 0 → 1 ] [ X w Y w Z w 1 ] Z_c\begin{bmatrix}u\\v\\1\\\end{bmatrix}=\begin{bmatrix}\dfrac{1}{dx}&0&u_0\\0&\dfrac{1}{dy}&v_0\\0&0&1\end{bmatrix}\begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}R&T\\\mathop{0}\limits^{\rightarrow}&1\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix} Zc⎣⎡uv1⎦⎤=⎣⎢⎢⎢⎡dx1000dy10u0v01⎦⎥⎥⎥⎤⎣⎡f000f0001000⎦⎤[R0→T1]⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤
= [ f x 0 u 0 0 0 f y v 0 0 0 0 1 0 ] [ R T 0 → 1 ] [ X w Y w Z w 1 ] =\begin{bmatrix}f_x&0&u_0&0\\0&f_y&v_0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}R&T\\\mathop{0}\limits^{\rightarrow}&1\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix} =⎣⎡fx000fy0u0v01000⎦⎤[R0→T1]⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤
其中 [ f x 0 u 0 0 0 f y v 0 0 0 0 1 0 ] \begin{bmatrix}f_x&0&u_0&0\\0&f_y&v_0&0\\0&0&1&0\end{bmatrix} ⎣⎡fx000fy0u0v01000⎦⎤
是相机内参;
[ R T 0 → 1 ] \begin{bmatrix}R&T\\\mathop{0}\limits^{\rightarrow}&1\end{bmatrix} [R0→T1]
是相机外参;Citation
本文的所有图片均引自链接1,同时大部分内容也是引用此篇文章,在此表示感谢!
[1] https://blog.csdn.net/chentravelling/article/details/53558096?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.control
[2] https://baike.baidu.com/item/%E5%83%8F%E7%B4%A0%E5%9D%90%E6%A0%87/5372225更多相关内容 -
世界坐标系、相机坐标系和图像坐标系的转换(Python)
2020-12-03 13:11:22世界坐标系,相机坐标系和图像坐标系的转换(Python)1.世界坐标->相机坐标2.相机坐标系->图像坐标系此时投影点p的单位还是mm,并不是pixel,需要进一步转换到像素坐标系。3.图像坐标系与像素坐标系像素坐标系和...世界坐标系,相机坐标系和图像坐标系的转换(Python)
1.世界坐标->相机坐标
2.相机坐标系->图像坐标系
此时投影点p的单位还是mm,并不是pixel,需要进一步转换到像素坐标系。
3.图像坐标系与像素坐标系
像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫principal point。图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx mm
那么通过上面四个坐标系的转换就可以得到一个点从世界坐标系如何转换到像素坐标系的。
python代码shi实现:
# -*- coding: utf-8 -*-
"""
# --------------------------------------------------------
# @Project: prpject
# @Author : panjq
# @E-mail : pan_jinquan@163.com
# @Date : 2020-02-04 16:03:01
# @url : https://www.jianshu.com/p/c5627ad019df
# --------------------------------------------------------
"""
import sys
import os
from tools import image_processing
sys.path.append(os.getcwd())
import numpy as np
from modules.utils_3d import vis
camera_intrinsic = {
# R,旋转矩阵
"R": [[-0.91536173, 0.40180837, 0.02574754],
[0.05154812, 0.18037357, -0.98224649],
[-0.39931903, -0.89778361, -0.18581953]],
# t,平移向量
"T": [1841.10702775, 4955.28462345, 1563.4453959],
# 焦距,f/dx, f/dy
"f": [1145.04940459, 1143.78109572],
# principal point,主点,主轴与像平面的交点
"c": [512.54150496, 515.45148698]
}
class Human36M(object):
@staticmethod
def convert_wc_to_cc(joint_world):
"""
世界坐标系 -> 相机坐标系: R * (pt - T)
:return:
"""
joint_world = np.asarray(joint_world)
R = np.asarray(camera_intrinsic["R"])
T = np.asarray(camera_intrinsic["T"])
joint_num = len(joint_world)
# 世界坐标系 -> 相机坐标系
# [R|t] world coords -> camera coords
joint_cam = np.zeros((joint_num, 3)) # joint camera
for i in range(joint_num): # joint i
joint_cam[i] = np.dot(R, joint_world[i] - T) # R * (pt - T)
return joint_cam
@staticmethod
def __cam2pixel(cam_coord, f, c):
"""
相机坐标系 -> 像素坐标系: (f / dx) * (X / Z) = f * (X / Z) / dx
cx,ppx=260.166; cy,ppy=205.197; fx=367.535; fy=367.535
将从3D(X,Y,Z)映射到2D像素坐标P(u,v)计算公式为:
u = X * fx / Z + cx
v = Y * fy / Z + cy
D(v,u) = Z / Alpha
=====================================================
camera_matrix = [[428.30114, 0., 316.41648],
[ 0., 427.00564, 218.34591],
[ 0., 0., 1.]])
fx = camera_intrinsic[0, 0]
fy = camera_intrinsic[1, 1]
cx = camera_intrinsic[0, 2]
cy = camera_intrinsic[1, 2]
=====================================================
:param cam_coord:
:param f: [fx,fy]
:param c: [cx,cy]
:return:
"""
# 等价于:(f / dx) * (X / Z) = f * (X / Z) / dx
# 三角变换, / dx, + center_x
u = cam_coord[..., 0] / cam_coord[..., 2] * f[0] + c[0]
v = cam_coord[..., 1] / cam_coord[..., 2] * f[1] + c[1]
d = cam_coord[..., 2]
return u, v, d
@staticmethod
def convert_cc_to_ic(joint_cam):
"""
相机坐标系 -> 像素坐标系
:param joint_cam:
:return:
"""
# 相机坐标系 -> 像素坐标系,并 get relative depth
# Subtract center depth
# 选择 Pelvis骨盆 所在位置作为相机中心,后面用之求relative depth
root_idx = 0
center_cam = joint_cam[root_idx] # (x,y,z) mm
joint_num = len(joint_cam)
f = camera_intrinsic["f"]
c = camera_intrinsic["c"]
# joint image,像素坐标系,Depth 为相对深度 mm
joint_img = np.zeros((joint_num, 3))
joint_img[:, 0], joint_img[:, 1], joint_img[:, 2] = Human36M.__cam2pixel(joint_cam, f, c) # x,y
joint_img[:, 2] = joint_img[:, 2] - center_cam[2] # z
return joint_img
if __name__ == "__main__":
joint_world = [[-91.679, 154.404, 907.261],
[-223.23566, 163.80551, 890.5342],
[-188.4703, 14.077106, 475.1688],
[-261.84055, 186.55286, 61.438915],
[39.877888, 145.00247, 923.98785],
[-11.675994, 160.89919, 484.39148],
[-51.550297, 220.14624, 35.834396],
[-132.34781, 215.73018, 1128.8396],
[-97.1674, 202.34435, 1383.1466],
[-112.97073, 127.96946, 1477.4457],
[-120.03289, 190.96477, 1573.4],
[25.895456, 192.35947, 1296.1571],
[107.10581, 116.050285, 1040.5062],
[129.8381, -48.024918, 850.94806],
[-230.36955, 203.17923, 1311.9639],
[-315.40536, 164.55284, 1049.1747],
[-350.77136, 43.442127, 831.3473],
[-102.237045, 197.76935, 1304.0605]]
joint_world = np.asarray(joint_world)
kps_lines = ((0, 7), (7, 8), (8, 9), (9, 10), (8, 11), (11, 12), (12, 13), (8, 14), (14, 15),
(15, 16), (0, 1), (1, 2), (2, 3), (0, 4), (4, 5), (5, 6))
# show in 世界坐标系
vis.vis_3d(joint_world, kps_lines, coordinate="WC", title="WC")
human36m = Human36M()
# show in 相机坐标系
joint_cam = human36m.convert_wc_to_cc(joint_world)
vis.vis_3d(joint_cam, kps_lines, coordinate="CC", title="CC")
joint_img = human36m.convert_cc_to_ic(joint_cam)
# show in 像素坐标系
kpt_2d = joint_img[:, 0:2]
image_path = "/media/dm/dm1/git/python-learning-notes/modules/utils_3d/s_01_act_02_subact_01_ca_02_000001.jpg"
image = image_processing.read_image(image_path)
image = image_processing.draw_key_point_in_image(image, key_points=[kpt_2d], pointline=kps_lines)
image_processing.cv_show_image("image", image)
-
世界坐标系、相机坐标系、图像坐标系、像素坐标系都是什么?
2020-11-12 15:19:08图像处理、立体视觉等等方向常常涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系 构建世界坐标系只是为了更好的描述相机的位置在哪里,在双目视觉中一般将世界坐标系原点定在左相机或者右相机...四个坐标系都是什么?
图像处理、立体视觉等等方向常常涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系
构建世界坐标系只是为了更好的描述相机的位置在哪里,在双目视觉中一般将世界坐标系原点定在左相机或者右相机或者二者X轴方向的中点。
接下来的重点,就是关于这几个坐标系的转换。也就是说,一个现实中的物体是如何在图像中成像的。四个坐标系之间的相互转换
-
从世界坐标系到相机坐标系
其中 [ x ′ , y ′ ] [x^{'},y^{'}] [x′,y′]为世界坐标系下的坐标,将世界坐标系顺时针旋转 θ \theta θ得到相机坐标系,将 [ x ′ , y ′ ] [x^{'},y^{'}] [x′,y′]在相机坐标系下的坐标记为 [ x , y ] [x,y] [x,y]。z轴坐标不发生改变。相当于我们沿z轴做旋转
[ x y z ] = [ cos θ − sin θ 0 sin θ cos θ 0 0 0 1 ] [ x ′ y ′ z ′ ] = R 1 [ x ′ y ′ z ′ ] \left[\begin{array}{l} x \\ y \\ z \end{array}\right]=\left[\begin{array}{ccc} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x^{\prime} \\ y^{\prime } \\ z^{\prime} \end{array}\right]=R_{1}\left[\begin{array}{l} x^{\prime} \\ y^{\prime} \\ z^{\prime} \end{array}\right] ⎣⎡xyz⎦⎤=⎣⎡cosθsinθ0−sinθcosθ0001⎦⎤⎣⎡x′y′z′⎦⎤=R1⎣⎡x′y′z′⎦⎤
如果将世界坐标系逆时针旋转 θ \theta θ得到相机坐标系,此时得到坐标变换过程为:此时,我们
[ x y z ] = [ cos θ sin θ 0 − sin θ cos θ 0 0 0 1 ] [ x ′ y ′ z ′ ] = R 1 [ x ′ y ′ z ′ ] \left[\begin{array}{l}x \\y \\z\end{array}\right]=\left[\begin{array}{ccc}\cos \theta & \sin \theta & 0 \\-\sin \theta & \cos \theta & 0 \\0 & 0 & 1\end{array}\right]\left[\begin{array}{l}x^{\prime} \\y^{\prime } \\z^{\prime}\end{array}\right]=R_{1}\left[\begin{array}{l}x^{\prime} \\y^{\prime} \\z^{\prime}\end{array}\right] ⎣⎡xyz⎦⎤=⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤⎣⎡x′y′z′⎦⎤=R1⎣⎡x′y′z′⎦⎤同理我们沿着剩下的两个坐标轴 x x x和 y y y进行旋转得到可以有剩下的两个变换矩阵 R 2 R_2 R2和 R 3 R_3 R3,那么我们从世界坐标系变换到相机坐标系所需要进行的变换是 R = R 1 R 2 R 3 R=R_1R_2R_3 R=R1R2R3
接着进行平移变换得到的结果为:
-
从相机坐标系变换到图像坐标系,属于透视投影关系,从3D转换到2D。
此时投影点p的单位还是mm,并不是pixel,需要进一步转换到像素坐标系。
-
从图像坐标系到像素坐标系
像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫principal point。图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx mm
那么通过上面四个坐标系的转换就可以得到一个点从世界坐标系如何转换到像素坐标系的。
其中相机的内参和外参可以通过张正友标定获取,通过最终的转换关系来看,一个三维中的坐标点,的确可以在图像中找到一个对应的像素点,但是反过来,通过图像中的一个点找到它在三维中对应的点就很成了一个问题,因为我们并不知道等式左边的Zc的值。
参考:
-
-
世界坐标系,相机坐标系和图像坐标系的转换(Python)
2020-02-05 16:45:40世界坐标系,相机坐标系和图像坐标系的转换(Python) 相机内参外参说明:https://panjinquan.blog.csdn.net/article/details/102502213 计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系...世界坐标系,相机坐标系和图像坐标系的转换(Python)
相机内参外参说明:相机内参外参_pan_jinquan的博客-CSDN博客_相机内参
计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换:计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换_生活没有if-else-CSDN博客_相机坐标系转世界坐标系
1.世界坐标->相机坐标
2.相机坐标系->图像坐标系
此时投影点p的单位还是mm,并不是pixel,需要进一步转换到像素坐标系。
3.图像坐标系与像素坐标系
像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫principal point。图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx mm
那么通过上面四个坐标系的转换就可以得到一个点从世界坐标系如何转换到像素坐标系的。
python代码实现:
以下是实现变换的关键代码
相关可视化部分已经push到github: https://github.com/PanJinquan/python-learning-notes
https://github.com/PanJinquan/python-learning-notes/blob/master/modules/utils_3d/camera_tools.py
# -*- coding: utf-8 -*- """ # -------------------------------------------------------- # @Project: Integral-Human-Pose-Regression-for-3D-Human-Pose-Estimation # @Author : panjq # @E-mail : pan_jinquan@163.com # @Date : 2020-02-04 16:03:01 # @url : https://www.jianshu.com/p/c5627ad019df # -------------------------------------------------------- """ import sys import os sys.path.append(os.getcwd()) import cv2 import numpy as np from modules.utils_3d import vis_3d as vis from utils import image_processing human36m_camera_intrinsic = { # R,旋转矩阵 "R": [[-0.91536173, 0.40180837, 0.02574754], [0.05154812, 0.18037357, -0.98224649], [-0.39931903, -0.89778361, -0.18581953]], # t,平移向量 "T": [1841.10702775, 4955.28462345, 1563.4453959], # 焦距,f/dx, f/dy "f": [1145.04940459, 1143.78109572], # principal point,主点,主轴与像平面的交点 "c": [512.54150496, 515.45148698] } kinect2_camera_intrinsic = { # R,旋转矩阵 "R": [[0.999853, -0.00340388, 0.0167495], [0.00300206, 0.999708, 0.0239986], [-0.0168257, -0.0239459, 0.999571]], # t,平移向量 "T": [15.2562, 70.2212, -10.9926], # 焦距,f/dx, f/dy "f": [367.535, 367.535], # principal point,主点,主轴与像平面的交点 "c": [260.166, 205.197] } camera_intrinsic = human36m_camera_intrinsic # camera_intrinsic = kinect2_camera_intrinsic class CameraTools(object): @staticmethod def convert_wc_to_cc(joint_world): """ 世界坐标系 -> 相机坐标系: R * (pt - T): joint_cam = np.dot(R, (joint_world - T).T).T :return: """ joint_world = np.asarray(joint_world) R = np.asarray(camera_intrinsic["R"]) T = np.asarray(camera_intrinsic["T"]) joint_num = len(joint_world) # 世界坐标系 -> 相机坐标系 # [R|t] world coords -> camera coords # joint_cam = np.zeros((joint_num, 3)) # joint camera # for i in range(joint_num): # joint i # joint_cam[i] = np.dot(R, joint_world[i] - T) # R * (pt - T) # .T is 转置, T is translation mat joint_cam = np.dot(R, (joint_world - T).T).T # R * (pt - T) return joint_cam @staticmethod def convert_cc_to_wc(joint_world): """ 相机坐标系 -> 世界坐标系: inv(R) * pt +T joint_cam = np.dot(inv(R), joint_world.T)+T :return: """ joint_world = np.asarray(joint_world) R = np.asarray(camera_intrinsic["R"]) T = np.asarray(camera_intrinsic["T"]) # 相机坐标系 -> 世界坐标系 joint_cam = np.dot(np.linalg.inv(R), joint_world.T).T + T return joint_cam @staticmethod def __cam2pixel(cam_coord, f, c): """ 相机坐标系 -> 像素坐标系: (f / dx) * (X / Z) = f * (X / Z) / dx cx,ppx=260.166; cy,ppy=205.197; fx=367.535; fy=367.535 将从3D(X,Y,Z)映射到2D像素坐标P(u,v)计算公式为: u = X * fx / Z + cx v = Y * fy / Z + cy D(v,u) = Z / Alpha ===================================================== camera_matrix = [[428.30114, 0., 316.41648], [ 0., 427.00564, 218.34591], [ 0., 0., 1.]]) fx = camera_intrinsic[0, 0] fy = camera_intrinsic[1, 1] cx = camera_intrinsic[0, 2] cy = camera_intrinsic[1, 2] ===================================================== :param cam_coord: :param f: [fx,fy] :param c: [cx,cy] :return: """ # 等价于:(f / dx) * (X / Z) = f * (X / Z) / dx # 三角变换, / dx, + center_x u = cam_coord[..., 0] / cam_coord[..., 2] * f[0] + c[0] v = cam_coord[..., 1] / cam_coord[..., 2] * f[1] + c[1] d = cam_coord[..., 2] return u, v, d @staticmethod def convert_cc_to_ic(joint_cam): """ 相机坐标系 -> 像素坐标系 :param joint_cam: :return: """ # 相机坐标系 -> 像素坐标系,并 get relative depth # Subtract center depth # 选择 Pelvis骨盆 所在位置作为相机中心,后面用之求relative depth root_idx = 0 center_cam = joint_cam[root_idx] # (x,y,z) mm joint_num = len(joint_cam) f = camera_intrinsic["f"] c = camera_intrinsic["c"] # joint image_dict,像素坐标系,Depth 为相对深度 mm joint_img = np.zeros((joint_num, 3)) joint_img[:, 0], joint_img[:, 1], joint_img[:, 2] = CameraTools.__cam2pixel(joint_cam, f, c) # x,y joint_img[:, 2] = joint_img[:, 2] - center_cam[2] # z return joint_img def demo_for_human36m(): joint_world = [[-91.679, 154.404, 907.261], [-223.23566, 163.80551, 890.5342], [-188.4703, 14.077106, 475.1688], [-261.84055, 186.55286, 61.438915], [39.877888, 145.00247, 923.98785], [-11.675994, 160.89919, 484.39148], [-51.550297, 220.14624, 35.834396], [-132.34781, 215.73018, 1128.8396], [-97.1674, 202.34435, 1383.1466], [-112.97073, 127.96946, 1477.4457], [-120.03289, 190.96477, 1573.4], [25.895456, 192.35947, 1296.1571], [107.10581, 116.050285, 1040.5062], [129.8381, -48.024918, 850.94806], [-230.36955, 203.17923, 1311.9639], [-315.40536, 164.55284, 1049.1747], [-350.77136, 43.442127, 831.3473], [-102.237045, 197.76935, 1304.0605]] joint_world = np.asarray(joint_world) # 关节点连接线 kps_lines = ((0, 7), (7, 8), (8, 9), (9, 10), (8, 11), (11, 12), (12, 13), (8, 14), (14, 15), (15, 16), (0, 1), (1, 2), (2, 3), (0, 4), (4, 5), (5, 6)) # show in 世界坐标系 vis.vis_3d(joint_world, kps_lines, coordinate="WC", title="WC", set_lim=True, isshow=True) kp_vis = CameraTools() # show in 相机坐标系 joint_cam = kp_vis.convert_wc_to_cc(joint_world) vis.vis_3d(joint_cam, kps_lines, coordinate="CC", title="CC", set_lim=True, isshow=True) joint_img = kp_vis.convert_cc_to_ic(joint_cam) joint_world1 = kp_vis.convert_cc_to_wc(joint_cam) vis.vis_3d(joint_world1, kps_lines, coordinate="WC", title="WC", set_lim=True, isshow=True) # show in 像素坐标系 kpt_2d = joint_img[:, 0:2] image_path = "./data/s_01_act_02_subact_01_ca_02_000001.jpg" image = image_processing.read_image(image_path) image = image_processing.draw_key_point_in_image(image, key_points=[kpt_2d], pointline=kps_lines) image_processing.cv_show_image("image_dict", image) if __name__ == "__main__": demo_for_human36m()
效果:
-
摄像头坐标系,图像坐标系,世界坐标系的转换
2011-05-30 10:01:47详细介绍了摄像头坐标系,图像坐标系,世界坐标系的转换过程 -
像素坐标系、图像坐标系、相机坐标系和世界坐标系的关系(简单易懂版)
2020-12-02 16:16:51...计算机视觉领域中常见的四个坐标系:像素坐标系、图像坐标系,相机坐标系,世界坐标系。 像素坐标系(u,v)(u,v)(u,v) 图像坐标系(x,y)(x,y)(x,y) 相 -
相机成像---世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系
2022-03-01 09:32:08新学期第一天开始写的这篇文章,看看我啥时候能把他发...相机焦距f,相机之间距离为b,右上角为目标位置P(x,y),目标的水平坐标为x,相机离目标垂直距离(所求目标距离相机的深度)为z。 如果要计算深度z,必须. -
【机器视觉】—— 相机成像过程坐标变化(世界坐标系、相机坐标系、图像坐标系、像素坐标系)
2021-09-05 11:23:52问题2(1):图像坐标系mm怎么转换为piex,即怎么计算成像平面中的1piex = dxmm (即计算dx,dy) 问题2(2):怎么计算u0,v0(图像坐标系原点相对于像素坐标系的位置) 六、世界坐标系到像素坐标系 问题3:什么是相机... -
世界坐标系/相机坐标系/图像坐标系 转换
2021-03-05 15:56:40目录一、各坐标系简要介绍二、坐标系转换2.1 世界坐标系转为相机坐标系2.2 相机坐标系转为物理图像坐标系2.3 物理图像坐标系转为图像坐标系2.4 总结2.5 为什么要使用齐次坐标参考文献 一、各坐标系简要介绍 首先... -
医学图像中解剖学坐标系(病人坐标系)和图像坐标系
2020-12-16 17:53:24在图像处理的程序中通常运用三种坐标体系:世界坐标体系,解剖学上的坐标体系(也称为病人坐标体系)和图像坐标体系。 世界坐标体系: 世界坐标体系是典型的笛卡尔坐标体系,在这个坐标体系中模型(如核磁扫描器,... -
【从零开始学习SLAM】坐标变换 像素坐标系 图像坐标系 相机坐标系 相机归一化坐标系 世界坐标系
2020-11-05 21:06:12按照十四讲的顺序我们首先接触的是像素坐标系、图像坐标系、相机坐标系、相机归一化坐标系、世界坐标系,这里学着学着就蒙了,所以我建议先学习投影模型,我认为二者可以理解为互逆过程。 -
机器视觉(六)——像素坐标系、图像坐标系、相机坐标系以及世界坐标系
2021-04-06 10:10:12机器视觉(六)——像素坐标系、图像坐标系、相机坐标系以及世界坐标系 目录1. 像素坐标系2. 图像坐标系3.相机坐标系4.世界坐标系 1. 像素坐标系 如下图所示:像素坐标系u-v的原点为O0, 横坐标u和纵坐标v分别是图像... -
世界坐标系、相机坐标系和图像坐标系的转换
2022-01-20 20:45:37 -
图像坐标系与世界坐标系的变
2019-07-02 15:49:19参考:1https://blog.csdn.net/chentravelling/article/details/53558096 2.https://blog.csdn.net/csxiaoshui/article/details/65446125 3.https://zhuanlan.zhihu.com/p/32030223 图像坐标系与世界坐... -
相机标定----世界坐标系,相机坐标系,图像坐标系,像素坐标系的转换
2021-05-12 18:21:25这个过程中会涉及到四个坐标系,即世界坐标系、相机坐标系、图像坐标系、像素坐标系。下面将详细介绍四个坐标系的函已并且记录其的转换过程。 图像中所涉及的四个坐标系及其含义: Ow - Xw - Yw - Zw :世界坐标... -
世界坐标系和图像坐标系的对应关系
2019-08-10 16:46:13世界坐标系到成像坐标系的映射关系 透镜模型 近似关系(相似三角形) 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: ... -
【立体视觉】世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的关系...
2021-03-30 16:01:25点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 本文转自:新机器视觉相机的成像过程涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系... -
世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系
2021-12-30 17:29:39参考这篇博文: 世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系 -
世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换
2018-12-29 15:04:29世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换 图像处理、立体视觉等方向常常涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。例如下图: 构建世界坐标系只是为了更好的描述... -
像素坐标系与图像坐标系
2018-07-26 15:53:071. 像素坐标系: 如下图所示:像素坐标系u-v的原点为O0, 横坐标u和纵坐标v分别是图像所在的行和列, 在视觉处理库OpenCV中,u对应x,v对应...图像坐标系x-y的原点是O1,为像素坐标系的中点, 如图所示: 假设... -
像素坐标系to图像坐标系+20200922
2020-09-22 22:26:18图像坐标系x-y的原点是O1,为像素坐标系的中点, 假设(u0,v0)代表O1在u-v坐标系下的坐标,dx和dy分别表示每个像素在横轴x和纵轴y的物理尺寸; 则图像坐标系和像素坐标系的关系如下: 假设物理坐标系中的单位为... -
浅析相机相关坐标系的相互转换(世界坐标系、相机坐标系、图像坐标系、像素坐标系、内参矩阵、外参矩阵、...
2019-05-15 16:03:16最近在网上看到了很多关于坐标系转换的帖子,但是其内容很多都是相互转载(甚至还有一部分是错误的),同时大部分的文章内容都是告诉你四种坐标系间的相互转化的数学公式,看完之后很多时候还是不知所云,本文意在... -
图像坐标系、相机坐标系和世界坐标系 相机的内、外参数矩阵
2019-05-16 16:54:39图像坐标系、相机坐标系和世界坐标系的定义,及三者之间的变换关系。 图像坐标系 1.图像像素坐标系 原点:图像左上角P0点 单位:像素 横坐标u:图像数组中的列数 纵坐标v:图像数组中的行数 2.图像物理坐标系 在... -
世界坐标系,相机坐标系,图像坐标系和像素坐标系之间的转换
2020-06-23 22:29:121、世界坐标系到相机坐标系之间的转换...2、相机坐标系到图像坐标系之间的转换:该转换可以看成简单的射影变换(将相机看成小孔模型),将三维坐标变换成二维坐标。其中f为焦距: 3、图像最坐标系到像素坐标系: ... -
相机成像原理中世界坐标系,相机坐标系,像素坐标系,图像坐标系的转换(数学推导)
2020-07-24 21:38:13由于最近在学习关于相机标定的知识,所以了解大量相机知识,但通过大量资料学习后发现,网上很多对坐标系的转化过程无明确过程,使得数学基础不好的笔者十分苦恼,由此整理了一篇关于坐标系转化的文章,仅供参考。... -
世界坐标系和相机坐标系,图像坐标系的关系
2016-01-25 15:35:34二、图像坐标:我想和世界坐标谈谈(B) 玉米将在这篇博文中,对图像...图中显示,世界坐标系通过刚体变换到达摄像机坐标系,然后摄像机坐标系通过透视投影变换到达图像坐标系。可以看出,世界坐标与图像坐标的关系 -
机器视觉(五)——摄像头坐标系,图像坐标系,世界坐标系的转换
2021-03-28 17:25:57目录1、图像坐标系(Pixel coordinate system)2、成像平面坐标系(Retinal coordinate system)3、摄像机坐标系(Camera coordinate system)4、世界坐标系(World coordinate system)5、摄像机线性模型 1、图像坐标系... -
OpenCV学习之世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系
2021-08-06 15:34:14OpenCV学习之世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系 -
图像坐标系,相机坐标系和世界坐标系
2018-09-13 15:10:30对于图像坐标系,相机坐标系和世界坐标系的学习和自己的一些理解,如果有错误欢迎指正和讨论。 图像坐标系 1.图像像素坐标系 原点:图像左上角P0点 单位:像素 横坐标u:图像数组中的列数 纵坐标v:图像...