世界坐标、相机坐标、图像坐标、像素坐标的原理、关系,并用matlab仿真

照相机是日常生活中最常见的。它能把三维的空间图片等比例缩小投影在照片上,称为一个二维图像。

以下我们就讲一讲原理,并相应的进行matlab仿真。

在学之前,先要了解几个概念:

  • 什么是世界坐标?

    • 也就是真实世界的立体空间坐标,是一个三维坐标系
    • Ow-XwYwZw :世界坐标系,描述相机位置,单位m
  • 什么是相机坐标?
    • 根据透镜成像原理,将世界坐标在照相机内呈现,是一个三维坐标系
    • Oc-XcYcZc  :相机坐标系,光心为原点,单位m
  • 什么是图像坐标?
    • 将相机呈现的三维坐标投影到屏幕上,而建立的新坐标系,不含高程信息,是一个二维坐标系
    • o-xy :图像坐标系,原点为成像平面中点,单位mm
  • 什么是像素坐标?
    • 将投影的图像坐标离散抽样形成的做种图片,是一个二维的坐标系
    • uv :像素坐标系,原点为图像左上角,单位pixel

所以步骤流程就是:

  • step1:将世界坐标转化为相机坐标,等比例缩小,外加旋转平移,称之为刚体变换;
  • step2:将相机坐标转化为图像坐标,称为投影
  • step3:将图像坐标离散抽样

模型如下图所示:

step1:构造rigbt()函数

世界坐标转化为相机坐标模型如下图所示:

从世界坐标系变换到相机坐标系属于刚体变换:即物体不会发生形变,只需要进行旋转和平移。

R:表示旋转矩阵

T:表示偏移向量

接下来分析旋转和平移

坐标轴绕z轴旋转 θ=Theta(希腊字母读法,编程用的到),其几何模型如下图所示:

公式满足:

矩阵形式为:

同理,绕x、y轴可以写成:

所以刚体变化中旋转变换R=R1R2R3。

平移矩阵T,则刚体变换可以写成:

进一步转化,可以写成4阶矩阵:

R矩阵是一个3×3矩阵,T是一个3×1矩阵,RT是一个4×4矩阵。

matlab 仿真:

function [RT] = rigbt(Phi, Psi, Theta, x0, y0, z0)
%刚体变换函数:rigid body transformation
%输入参数:
%   φ=Phi       绕x轴转动的角度
%   ψ=Psi       绕y轴转动的角度
%   θ=Theta     绕z轴转动的角度
%输出参数:
%    RT 将坐标轴进行刚体变化(旋转+平移)成新的坐标轴
%
%% 程序
R1 = [1 0 0; 0 cos(Phi) sin(Phi); 0 -sin(Phi) cos(Phi)];%绕X轴旋转
R2 = [cos(Psi) 0 -sin(Psi); 0 1 0; sin(Psi) 0 cos(Psi)];%绕Y轴旋转
R3 = [cos(Theta) sin(Theta) 0;-sin(Theta) cos(Theta) 0; 0 0 1 ];%绕Z轴旋转
R = R3 * R1 * R2;%旋转矩阵(刚体变换一部分)
T = [x0; y0; z0];%平移矩阵
RT=[R T;0 0 0 1];%刚体变换矩阵
return

step2:构造proj()函数

相机坐标投影成图像坐标,几何模型如下图所示:

几何关系(相似)满足:

即:

代入:

写成矩阵形式:

matlab 仿真:

function [Projection_Matrix] = proj(f)
%相机坐标投影(projection)成图像坐标
%输入参数
%   f                   相机焦距(数,cm)
%输出参数
%   Projection_Matrix   投影成像(矩阵)
Projection_Matrix = [f 0 0 0; 0 f 0 0; 0 0 1 0];
return

step3:构造pixel()函数

xoy是图像坐标; uo_{uv}v是像素坐标; (u0,v0)是像素坐标的中心; p(x,y)是图像中的任意一点。

模型如下:

将x、y分成n份,每份长度为dx、dy。

则几何公式为:

转化为矩阵形式:

matlab仿真:

function [Pixel_Matrix] = pixel(dx,dy,u0,v0)
%图像坐标离散化,转化为像素坐标
%输入参数:
%   dx      x轴方向上分辨率,像素大小
%   dy      y轴方向上分辨率,像素大小
%   (u0,v0) 参考坐标,图像平面中心
if nargin==2u0 = 0;v0 = 0;
end
Pixel_Matrix = [1/dx 0 u0; 0 1/dy v0; 0 0 1];
return

step4:前三步整合

公式中, fx=f/dx,fy=f/dy。

matlab 主程序

% 将世界坐标转化为像素坐标的参数
%% 程序
clear all;close all; clc;
% 参数
Phi = pi/4;%绕x轴旋转角度
Psi = pi/4;%绕y轴旋转角度
Theta = pi/4;%绕z轴旋转角度
x0 = 0;%x平移量
y0 = 0;%y平移量
z0 = 0;%z平移量
f = 35e-3;%35mm相机
dx = 0.026;%一个像素的长
dy = 0.026;%一个像素的宽
u0 = 0;%图像平面中心
v0 =0;%图像平面中心%% step1:将世界坐标转化为相机坐标,等比例缩小,外加旋转平移(刚体变换)
RT = rigbt(Phi, Psi, Theta, x0, y0, z0);%刚体变换矩阵%% step2:将相机坐标转化为图像坐标(投影)
Projection_Matrix = proj(f);%投影矩阵%% step3:将图像坐标离散抽样
Pixel_Matrix = pixel(dx,dy,u0,v0);%1像素=0.635厘米÷24≈0.026458厘米
%% 数据整合
Camera_Internal_Parameters = Pixel_Matrix * Projection_Matrix;%相机内参数
Camera_External_Parameters = RT;%相机外参数
%清除不用的变量
clearvars -except Camera_Internal_Parameters Camera_External_Parameters
%相机参数
Camera_Parameters = Camera_Internal_Parameters*Camera_External_Parameters
clearvars -except Camera_Parameters%清除变量

仿真结果:

扩展:

实际应用中,往往将上面的主程序main制作成一个相机参数函数camera_ parameters(),更有利于调用。可以用下面相机参数函数一个代替上面的main程序。

matlab 仿真

function [Camera_Parameters] = camera_parameters()
% 将世界坐标转化为像素坐标的参数(相机参数矩阵)
% 参数,可以省,省去的话,必须设置相应的入参
Phi = pi/4;%绕x轴旋转角度
Psi = pi/4;%绕y轴旋转角度
Theta = pi/4;%绕z轴旋转角度
x0 = 0;%x平移量
y0 = 0;%y平移量
z0 = 0;%z平移量
f = 35e-3;%35mm相机
dx = 0.026;%一个像素的长
dy = 0.026;%一个像素的宽
u0 = 0;
v0 =0;%% step1:将世界坐标转化为相机坐标,等比例缩小,外加旋转平移(刚体变换)
RT = rigbt(Phi, Psi, Theta, x0, y0, z0);%刚体变换矩阵%% step2:将相机坐标转化为图像坐标(投影)
Projection_Matrix = proj(f);%投影矩阵%% step3:将图像坐标离散抽样
Pixel_Matrix = pixel(dx,dy,u0,v0);%1像素=0.635厘米÷24≈0.026458厘米
%% 数据整合
Camera_Internal_Parameters = Pixel_Matrix * Projection_Matrix;%相机内参数
Camera_External_Parameters = RT;%相机外参数
%相机参数
Camera_Parameters = Camera_Internal_Parameters*Camera_External_Parameters;

仿真结果:

注:

  • 程序中好多参数是本人找的,有的参数,我简单化了。也可以改参数运行。
  • 本文参考了:https://download.csdn.net/download/chentravelling/9833120
  • 本博客文档下载地址:https://download.csdn.net/download/weixin_41649786/10629546
  • 本博客代码下载地址:https://download.csdn.net/download/weixin_41649786/10629733

给学matlab的人,包括我自己一个勉励:路漫漫其修遠兮,吾將上下而求索

世界坐标、相机坐标、图像坐标、像素坐标的原理、关系,并用matlab仿真相关推荐

  1. matlab 相机焦距,世界坐标、相机坐标、图像坐标、像素坐标的原理、关系,并用matlab仿真...

    照相机是日常生活中最常见的.它能把三维的空间图片等比例缩小投影在照片上,称为一个二维图像. 以下我们就讲一讲原理,并相应的进行matlab仿真. 在学之前,先要了解几个概念: 什么是世界坐标? 也就是 ...

  2. openlayers地图坐标转换为屏幕像素坐标,屏幕像素坐标转成地图实际坐标

    前言: openlayers的地图坐标的转换,地图坐标与屏幕像素坐标的互转. 具体方法: 地图坐标转屏幕像素(getPixelFromCoordinate):入口 屏幕像素转地图坐标(getCoord ...

  3. 经纬度坐标点与像素坐标点之间的转换

    经纬度到屏幕像素点的换算方法 相关问题点:1)地球是不规则的球体,两极扁,赤道鼓.不能简单地作为圆球体来计算.2)每纬度在地理位置上的距离是一致的(约111公里),但是每经度之间的距离是不同的(越往两 ...

  4. 利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息

    1.示例高光谱图像 2.像素光谱信息提取步骤 2.1 栅格转点 在ArcGIS的工具箱中选择[栅格转点]工具,将每个像素都转成一个点,如下图所示: 2.2 多值提取至点 在ArcGIS的工具箱中选择[ ...

  5. 小孔成像模型中四个坐标系的转换:世界 相机光心 图像毫米 像素

    相机模型 数码相机图像拍摄的过程实际上是一个光学成像的过程.相机的成像过程涉及到四个坐标系:世界坐标系.相机坐标系.图像坐标系.像素坐标系以及这四个坐标系的转换. 理想透视模型--针孔成像模型 相机模 ...

  6. 世界坐标系,相机坐标系,图像坐标系,像素坐标系是什么?

    四种坐标系 相机标定过程中涉及的坐标系类型:世界坐标系,相机坐标系,图像坐标系,像素坐标系. 世界坐标系(xw,yw,zw):摄像机与被摄物体可以放置在环境中任意位置,这样就需要在环境中建立一个坐标系 ...

  7. 图像的阴影检测消除和图像重建算法matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真测试结果 作者ID :fpga和matlab CSDN主页:https://blog.csdn.net/ccsss22?type=blog 擅长技术: 1.无 ...

  8. 【发票识别】基于图像形态学处理的发票数字识别的MATLAB仿真

    1.软件版本 matlab2021a 2.部分核心代码 clc; clear; close all; warning off; addpath 'func\'alpha = 0.9; LL = 3; ...

  9. 像素坐标、图像坐标、相机坐标和世界坐标

    相机成像时,世界坐标系下三维空间的一点(X_w, Y_w, Z_w)到像素(u,v)的转换需要经历世界坐标系->相机坐标系->图像坐标系->像素坐标系一系列变换. 世界坐标系-> ...

  10. 从像素坐标到相机坐标_多视图几何基础——深入理解相机内外参数

    上一篇:前言(comming soon) 关键词:相机模型,多视图几何,相机内参数,相机外参数,skew畸变 1. 针孔相机模型 Figure 1 针孔相机模型是一种理想化的简单相机模型,也是成像的最 ...

最新文章

  1. SpringBoot部署脚本,拿走即用!
  2. python三大神器之装饰器
  3. java guava json文件_Json解析文件位置的问题
  4. ubuntu 禁用透明大页_如何在ubuntu上默认启用透明的大页面?
  5. 将安卓手机打造成你的python全栈开发利器
  6. python的打开_记录
  7. 机器学习和ML.NET简介-第1部分
  8. JAVA开发面试常问问题总结4
  9. WinForm窗体重要属性与公共控件的重要属性
  10. app中的h5游戏分享到微信等第三方
  11. 基于51单片机+LCD1602显示
  12. kafka下载与安装教程
  13. Python 实现的、带GUI界面的词云生成器
  14. 网课搜题公众号制作方法
  15. 微信笔记如何重命名_不只是您:Google在Android上重命名为“保持笔记”
  16. 你的微信接收消息也会延迟吗?原因居然出在这,一招教你轻松解决
  17. 关于pyecharts可视化进阶中国经济、人口等数据
  18. NS 宣布推出两款 Boomer D 类音频子系统
  19. Android 10 文件读写权限申请
  20. 搜索引擎排名都选乐云seo_广州搜索引擎排名_乐云SEO

热门文章

  1. LaTeX设置页眉页脚
  2. Python入门:数据结构之字典(dict)(2)
  3. multiparty 和 busboy
  4. Tif格式图片的读取与保存
  5. C# PPT/PDF文件转图片,图片转PPT
  6. 论文引用内容计算重复率吗?
  7. 打开caj文件显示服务器忙,欢迎使用CAJViewer-常见问题
  8. 如何只用电脑登录微信
  9. Meshless Deformations Based on Shape Matching
  10. 大地高、正高和正常高的区别