天天看點

柱面模型解析

柱面模型解析

     柱面全景是最為簡單的全景虛拟。所謂柱面全景,可以了解為以節點為中心的具有一定高度的圓柱形的平面,平面外部的景物投影在這個平面上。如圖所示。

使用者可以在全景圖像中 360 度的範圍内任意切換視線,也可以在一個視線上改變視角,來取得接近或遠離的效果,也可以認為是球面全景圖的一種簡化。使用者在水準方向上有 360度的視角,在垂直方向上也可以做一定的視角變化,但是角度範圍則受到限制。由于柱面模型的圖像品質均勻,細節真實程度更高,應用範圍比較廣泛。

柱面全景圖像也較為容易處理,因為可以将圓柱面沿軸向切開并展開在一個平面上,傳統的圖像處理方法常常可以直接使用。柱面全景圖像并不要求照相機的标定十分準确。是以将柱面全景圖顯著優點歸納為以下兩點:

1)它的單幅照片的擷取方式比立方體形式和球面形式的擷取方式簡單。所需的裝置隻有普通的相機和一個允許連續“轉動”的三角架。

2)柱面全景圖容易展開為一個矩形圖像,可直接用計算機常用的圖像格式進行存儲和通路。雖然柱面形式的全景圖在垂直方向允許參與者視線的轉動角度小于 180 度,但是在絕大多數應用中,水準方向的 360 度環視場景已足以表達空間資訊。

柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析
柱面模型解析

// 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; }

來自為知筆記(Wiz)

目前方向:圖像拼接融合、圖像識别

聯系方式:[email protected]

繼續閱讀