matlab练习程序(图像投影到点云)

最近接触点云比较多,如果把图像投影到点云应该挺有意思。

首先需要载入图像,然后做个球或其他什么形状的点云,这里可以参考球坐标公式。

最后通过pcshow将像素输出到点云上即可。

原图:

投影后的点云:

代码如下:

clear all;
close all;
clc;

img = imread(‘lena.jpg‘);

[m,n,d]=size(img);
I=reshape(img,[],d);   

R=1;
x=zeros(m*n,1);
y=zeros(m*n,1);
z=zeros(m*n,1);
num = 0;

%做个球。。。
for j=-pi/2:pi/n:pi/2-pi/n
    for i=0:2*pi/m:2*pi-2*pi/m

        num=num+1;
        x(num) = R.*cos(j).*cos(i);
        y(num) = R.*sin(j).*cos(i);
        z(num) = R.*sin(i);

    end
end

pcshow([x y z],[I I I]);    %如果是彩色图:pcshow([x y z],I);

本篇是参考matlab中pcshow例子写的,区别是例子中没有显性的写球坐标公式,其实都差不多,使用全景图效果应该更好些。

matlab帮助文档:

https://ww2.mathworks.cn/help/vision/ref/pcshow.html?requestedDomain=cn

原文地址:https://www.cnblogs.com/tiandsp/p/11613889.html

时间: 2024-11-02 11:39:10

matlab练习程序(图像投影到点云)的相关文章

matlab练习程序(弧形投影)

这个其实也算是圆柱体投影了,不过上一篇文章是从正面看,得到的是凸形的结果,而这个是从反面看,得到的是凹形的结果. 计算公式就不写了,大致介绍一下,计算公式中关于x坐标求法和上篇一样,y坐标则正好是上篇公式的反变换,结合上篇公式代码和本篇的代码,应该都不是很难理解的. 下面是hfOV为pi/2时得到的变换结果: 原图: 处理后结果: matlab代码如下: clear all; close all;clc; img=imread('lena.jpg'); [h,w]=size(img); hfOV

【转载】matlab练习程序(图像Haar小波变换)

matlab练习程序(图像Haar小波变换) 关于小波变换我只是有一个很朴素了理解.不过小波变换可以和傅里叶变换结合起来理解. 傅里叶变换是用一系列不同频率的正余弦函数去分解原函数,变换后得到是原函数在正余弦不同频率下的系数. 小波变换使用一系列的不同尺度的小波去分解原函数,变换后得到的是原函数在不同尺度小波下的系数. 不同的小波通过平移与尺度变换分解,平移是为了得到原函数的时间特性,尺度变换是为了得到原函数的频率特性. 小波变换步骤: 1.把小波w(t)和原函数f(t)的开始部分进行比较,计算

matlab练习程序(圆柱投影)

圆柱投影就是将一张二维的图像投影到三维的圆柱体上,不过在显示图像的时候依然是以二维的形式给出. 投影最重要的步骤就是计算投影变换公式,和图像旋转类似,只要得到变换公式,再依照公式进行代码编写就很容易了. 这里就不写投影变换公式的推导过程了,直接给出变换公式.公式分为正变换和反变换,编程时,反变换公式通常更有用. 正变换公式如下: x'=f\cdot\arctan\left({\frac{x-\frac{W}{2}}{f}}\right)+f\cdot\arctan\left({\frac{W}{

matlab练习程序(透视投影,把lena贴到billboard上)

本练习程序是受到了这个老外博文的启发,感觉挺有意思,就尝试了一下.他用的是opencv,我这里用的是matlab. 过去写过透视投影,当时是用来做倾斜校正的,这次同样用到了透视投影,不过更有意思,是将一张图像贴到另一张图像上. 两个透视投影都需要先计算投影矩阵,倾斜校正那一篇是通过解线性方程组求的变换矩阵,而这一篇是通过奇异值分解求的变换矩阵. 为了对齐两张图像,还需要对投影后的图像做一次仿射变换,其实就是坐标平移. 这里做投影和仿射直接调用了matlab的系统函数,方便一些. 还是先介绍下如何

matlab练习程序(弧形、圆柱投影的复原)

前一段介绍了从矩形图像到圆柱的正向投影,看这里和这里.今天介绍如何从已经投影的图像反映射到原图像上. 本来此种变换一定是需要数学公式的,不过这里只是用了一个很简单的方式来完成反映射. 具体就把每一列有像素数据的长度拉伸到原图像的高就行了. 原图像是这样: 处理后: 看着感觉还可以,不过这样显然是不合数学公式的,和最原始的图比较一下就看出来差别了: matlab代码如下: clear all;close all;clc; img=imread('re.bmp'); [h w]=size(img);

matlab练习程序(旋转、径向模糊)

还记得过去写过径向模糊,不过当时效果似乎不好. 这次效果还可以,程序中用的算法是: 1.求当前处理点和图像中心点之间的距离r与角度ang; 2.通过对r的修改得到径向模糊. 3.通过对ang的修改得到旋转模糊. 一看代码就能全部明白,不仔细解释了. 原图如下: 处理后效果: matlab代码如下: clear all;close all;clc img=imread('lena.jpg'); [h w]=size(img); imshow(img) imgn=zeros(h,w); for y=

Matlab实现:图像边缘提取

1. 边缘提取算法 方法一:一阶微分算子 Sobel算子 Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,Sobel算子对边缘定位不是很准确,图像的边缘不止一个像素. Roberts算子 Roberts算子检测方法对具有陡峭的低噪声的图像处理效果较好,但是利用roberts算子提取边缘的结果是边缘比较粗,因此边缘的定位不是很准确. Prewitt算子 Prewitt算子检测方法对灰度渐变和噪声较多的图像处理效果较好.但边缘较宽,而且间断点多. Canny算子 Canny算子是目前边

2、将图像转换为点云

1.它是后面处理地图的基础,最简单的点云地图就是把不同位置的点云进行拼接得到的. 2.由于从RGB-D相机里可以采集到两种形式的数据:彩色图像和深度图像.如果有kinect和ros,那么可以运行如下 roslaunch openni_launch openni.launch 来使Kinect工作.如果PC机连上Kinect,那么彩色图像和深度图像会发布在/camera/rgb/image_color 和 /camera/depth_registered/image_raw 中:可以通过运行如下

(转)matlab练习程序(HOG方向梯度直方图)

matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram of Oriented Gradient)方向梯度直方图,主要用来提取图像特征,最常用的是结合svm进行行人检测. 算法流程图如下(这篇论文上的): 下面我再结合自己的程序,表述一遍吧: 1.对原图像gamma校正,img=sqrt(img); 2.求图像竖直边缘,水平边缘,边缘强度,边缘斜率. 3.