博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
柱面模型解析
阅读量:6240 次
发布时间:2019-06-22

本文共 1264 字,大约阅读时间需要 4 分钟。

508489-20170517212617182-21444755.jpg
     柱面全景是最为简单的全景虚拟。所谓柱面全景,可以理解为以节点为中心的具有一定高度的圆柱形的平面,平面外部的景物投影在这个平面上。如图所示。

用户可以在全景图像中 360 度的范围内任意切换视线,也可以在一个视线上改变视角,来取得接近或远离的效果,也可以认为是球面全景图的一种简化。用户在水平方向上有 360度的视角,在垂直方向上也可以做一定的视角变化,但是角度范围则受到限制。由于柱面模型的图像质量均匀,细节真实程度更高,应用范围比较广泛。

柱面全景图像也较为容易处理,因为可以将圆柱面沿轴向切开并展开在一个平面上,传统的图像处理方法常常可以直接使用。柱面全景图像并不要求照相机的标定十分准确。所以将柱面全景图显著优点归纳为以下两点:

1)它的单幅照片的获取方式比立方体形式和球面形式的获取方式简单。所需的设备只有普通的相机和一个允许连续“转动”的三角架。

2)柱面全景图容易展开为一个矩形图像,可直接用计算机常用的图像格式进行存储和访问。虽然柱面形式的全景图在垂直方向允许参与者视线的转动角度小于 180 度,但是在绝大多数应用中,水平方向的 360 度环视场景已足以表达空间信息。508489-20170517212619619-1926773075.jpg508489-20170517212624228-786433118.jpg508489-20170517212626978-872565472.jpg508489-20170517212630057-388332791.jpg508489-20170517212633541-344092584.jpg508489-20170517212637057-942421772.jpg508489-20170517212638463-1510006070.jpg508489-20170517212641447-326452848.jpg508489-20170517212643650-29547338.jpg508489-20170517212646057-1107665662.jpg508489-20170517212647557-806491136.jpg508489-20170517212651010-1883323698.jpg508489-20170517212655463-1932372092.jpg508489-20170517212658369-318817875.jpg508489-20170517212700025-875317496.jpg508489-20170517212700963-468339155.jpg508489-20170517212701994-1538855791.jpg508489-20170517212704135-1626003968.jpg508489-20170517212706650-2055750315.jpg// ConsoleApplication.cpp : 定义控制台应用程序的入口点。

//
#include "stdafx.h"
using namespace std;
using namespace cv;
#define  PI 3.14159
int _tmain(int argc, _TCHAR* argv[])
{
    Mat src = imread("e:/template/Univ4.jpg");
     
    Mat result = src.clone();
    for(int i=0;i<result.rows;i++)
    {       
            for(int j=0;j<result.cols;j++)         
            result.at<Vec3b>(i,j)=0;
    }
    int W = src.cols;
    int H = src.rows;
    float r = W/(2*tan(PI/6));
    float k = 0;
    float fx=0;
    float fy=0;
    for(int i=0;i<src.rows;i++)
    {     
        for(int j=0;j<src.cols;j++)
        {     
            k = sqrt((float)(r*r+(W/2-j)*(W/2-j)));
            fx = r*sin(PI/6)+r*sin(atan((j -W/2 )/r));
            fy = H/2 +r*(i-H/2)/k;
            int ix = (int)fx;
            int iy = (int)fy;
            if (ix<W&&ix>=0&&iy<H&&iy>=0)
                result.at<Vec3b>(iy,ix)= src.at<Vec3b>(i,j);
        }
    }
    imshow("src",src);
    imshow("result",result);
    waitKey();
    return 0;
}

转载地址:http://jzdia.baihongyu.com/

你可能感兴趣的文章
Qt Creator快捷键
查看>>
idea中lombok的使用
查看>>
网站集成支付宝在线支付
查看>>
mac下安装appium
查看>>
js ---- 函数防抖
查看>>
js call 和 apply
查看>>
CentOS 6.5下Percona Xtrabackup的安装错误解决方案
查看>>
VCS双机+oracle 11gR2+ASM主机名修改
查看>>
转:// LINUX下为ORACLE数据库设置大页--hugepage
查看>>
Linux文件权限与属性详解 之 chattr & lsattr
查看>>
负载均衡集群之LVS配置命令
查看>>
PHP使用文件流下载文件方法(附:解决下载文件内容乱码问题)
查看>>
多线程编程
查看>>
再谈谈数学
查看>>
Scheme来实现八皇后问题(1)
查看>>
pip或者anacnda安装opencv以及opencv-contrib
查看>>
Unity 5 中的全局光照技术详解(建议收藏)
查看>>
python 的矩阵运算——numpy
查看>>
处理handler中的内存泄漏
查看>>
P8 Visible Lattice Points
查看>>