CODE_ GENRL_APP_CYLPROJECTION

主要用途:实现图像从平面到柱面的投影。

能力分类:嵌入式

应用领域:便携产品,电源电池,无人机,射频通信,国防军工

交易方式: 定制

参考价格:50000.00 小贴士:当前佣金是0%

好评率:100%| 综合评分:5.0| 已购买:0次
联系我 收藏店铺
分享: 

 模块描述

CYLPROJECTION模块实现图像从平面到柱面的投影

由于图像序列是实体景物在不同坐标系下的二维投影,直接对拍摄图像进行拼接无法满足视觉一致性,所以需要将待拼接的图像分别投影到一个标准的坐标系下,然后再进行图像的拼接。全景图生成系统可以采用圆柱体、立方体和球体等模型来实现。由于柱面坐标的变换比较简单并且投影图像与其投影到圆柱表面的位置无关,用其描述的柱面全景图像可在水平方向上满足360度环视,具有较好的视觉效果,因此被广泛采用。

 

1.1  原理及方式

假定照相机的运动都发生在x—Z平面,而且图像中心点就是光轴与图像平面的交点,现在要得到0点观察到的原始图像,在柱面空间K上的柱面投影图像J’。

1.png

设柱面半径为r,投影角为a,图像宽度为W,图像高度为H。容易得到柱面图像的宽度为2rsin(a/2),高度仍为H。图像的像素坐标均以图像平面中的最左上角像素为坐标原点。

对图像J上的任意一点P(x,y),在柱面图像J'上的对应点为P’(x’,y'),对点P沿x一z平面和y—z的横截面分别如上图中(b)、(c)所示,可得柱面投影变换公式:

x’=r*sin(a/2)+r*sin(arctan((x-W/2)/r))

y’=H/2+r*(y-H/2)/k

其中:k=sqrt(r*r+(W/2-x)(W/2-x))

r=W/(2tan(a/2)),

r为拍摄焦距,a为每张图像所占的弧度角。

 

1.2  主要功能

实现图像从平面到柱面的投影

 标准模块

无。

 模块设计

函数定义如下:

函数原型

IplImage* cylindrical_projection(IplImage* imgSrc, int n)

功能描述

源图像数据映射到柱面。

输入参数

IplImage *imgSrc: 输入源图像;

int n: 输入图像的深度。

返回值

IplImage * : 映射后图像数据。

 类定义

 应用举例

#include "cylProjection.h"

int main()

{

    printf("Please input filename\n");

     char filename[100];

     scanf("%s", filename);

     IplImage *img = cvLoadImage(filename);

     IplImage *dst = cylindrical_projection(img, img->depth);

     

    cvNamedWindow(IMG);

    cvShowImage(IMG,img);

    waitKey();

}

 其他

 


总体评价

好评率:100%

好评数量:0

总体评分

工作速度:5分

工作质量:5分

工作态度:5分

暂无评价

企业其他能力

More>