【圖像變換】DIBR-3D圖像變換(3D Image Warping)matlab源碼

2021-12-18 天天Matlab

收錄於話題 #圖像處理matlab源碼 314個內容

1 DIBR-3D圖像變換算法介紹

DIBR的核心就是首先利用深度信息將參考圖像投影到三維歐式空間,然後再將三維空間點投影到虛擬攝像機的成像平面上。在計算機圖形學中被稱為3D Image Warping技術。

1.1像素坐標系和圖像坐標系

如圖一所示,三維空間點在成像平面上的位置可以通過像素坐標系和圖像坐標系來表示。

在直角整數像素坐標系u-v中,每個像素的坐標(u,v)T分別代表該像素在二維圖像陣列中的列數和行數。由於此坐標系並未用物理單位表示出像素點在圖像中的實際位置,因此需要建立以物理單位表示的圖像坐標系x-y。該坐標系以圖形內某一點m為原點,x和y軸分別於u,v平行。若m在u,v坐標系中的坐標為(mu,mv),每個像素在x和y軸方向上的物理尺寸為dx,dy。則圖像中任意一個像素在兩個坐標系下的坐標有如下關係:

(1)

用齊次坐標表示為:

(2)

1.2  針孔相機模型

我們考慮空間點到某一平面上的中心投影。令投影中心位於一個歐式坐標系的原點,而平面Z = f被稱為圖像平面或聚焦平面。在針孔攝像機模型下,空間坐標為X = (X, Y, Z)T的點X被映射到圖像平面上的一點,該點是連接點X與投影中心的直線與圖像平面的交點。圖3–7對此作了說明,根據相似三角形,可以很快地算出點(X, Y, Z)T被映射到圖像平面上點(fX/Z, fY /Z, f )T。因此,從世界坐標到圖像坐標的中心投影是:

(3)

這是從三維歐式空間到兩維歐式空間的一個映射。投影中心稱為攝像機中心,也稱為光心。攝像機中心到圖像平面的垂線稱為攝像機的主軸或主射線。而主軸與圖像平面的交點稱為主點,過攝像機中心平行於圖像平面的平面稱為攝像機的主平面。如果用其次矢量表示世界和圖像點,那麼中心投影可以非常簡單地表示成齊次坐標之間的線性映射。

圖2 針孔相機模型示意圖

式子3可以寫成如下矩陣形式:

(4)

該表達式中的矩陣可以寫成diag(f, f, 1)[I|0],其中 diag(f, f, 1) 是對角矩陣,而 [I|0] 表示矩陣分塊成一個 3 × 3 的恆等矩陣加上一個零列矢量。

我們現在引入如下記號:世界點X用 4 維齊次矢量 (X,Y,Z,1)T表示;圖像點x被表示成 3 維齊次矢量的形式;P 表示 3 × 4 齊次攝像機投影矩陣,這樣式4可以記為:

(5)

它定義了中心投影的針孔模型的攝像機矩陣為:

(6)


圖三顯示了攝像機坐標系和圖像坐標系。

圖3 攝像機坐標系和圖像坐標系

式 3 假定圖像平面的坐標原點在主點上,實際情況可能不是這樣,如圖3所示。此時中心投影的映射可以表示為:

(7)

其中(px, py)T是主點的坐標,該方程用齊次坐標可以表示成:

(8)

若記

(9)

則式7有一個簡潔的形式:

(10)

矩陣K稱為攝像機標定矩陣,在式(3–10)中我們記 (X,Y,Z,1)T為Xcam是為了強調攝像機被設定在一個歐式坐標系的原點且主軸沿著Z軸的指向,而點Xcam按此坐標系表示,這樣的坐標系可以稱為相機坐標系。

但有時某些 CCD 攝像機的像素可能不是正方形的。如果圖像坐標以像素來測量,那麼需要在每個方向上引入非等量尺度因子。具體地說,如果在x和y方向上圖像坐標單位距離的像素數分別是mx和my,那麼由世界坐標到像素坐標的變化由式(3–9)左乘一個附加的因子 diag(mx, my, 1)而得到。因此此類攝像機標定矩陣的一般形式是:

(11)

其中ax= fmx和ay= fmy分別把攝像機的焦距換算成x和y方向的像素量綱。同理 x 0= (u0, v0)T是用像素量綱表示的主點,它的坐標是u0= mxpx和v0= mypy。


1.3 攝像機參數

通常空間點採用不同的歐式坐標系表示,稱為世界坐標系。世界坐標系和攝像機坐標系之間通過旋轉和平移相聯繫,參看圖4.

圖4 世界和攝像機坐標系之間的歐式表換示意圖

齊次矢量,表示世界坐標系中的某一點的坐標,而Xcam是以攝像機坐標系來表示的同一點,那麼我們可以記Xcam= R(X-C),其中 C 表示攝像機中心在世界坐標系中的坐標,R是一個3 × 3 的旋轉矩陣,表示攝像機坐標系的方位。這個方程在齊次坐標下可以寫成:

(13)

把它與式10結合起來形成公式:

(14)

為了方便起見,通常攝像機中心不明顯標出,而把世界坐標繫到圖像坐標系的變換表示成Xcam= RX + t。在該表示方式下攝像機矩陣簡化成:

(15)

根據式14不難看出,t =  RC。


3D Image Warping方程

如圖5所示,設世界坐標系中某一空間的齊次矢量表示為 Pw=(Xw, Yw, Zw, 1)T,該點投影在參考視點圖像平面和虛擬視點圖像平面上的像素坐標分別為p1= (u1, v1, 1)T和p2= (u2, v2, 1)T。對於參考視點圖像和虛擬視點圖像的攝像機坐標系,其旋轉矩陣和平移矩陣分別記為R1,R2和t1=  R1C1,t2=  R2C2。

(16)

(17)


圖5 基於3D Image Warping方程的虛擬視點繪製

其中,K1,K2分別代表參考攝像機和虛擬攝像機的內參參數矩陣,而λ1,λ2則分別對應於攝像機的齊次比例縮放因子。由式16可得,空間點 Pw在三維歐式空間中坐標可以被表示為:

(18)

最終,將式18代入式17中,我們可以得到點 Pw在虛擬視點圖像上的像素坐標p2:

(19)



是攝像機縮放係數,一般取值為深度值。

2 部分代碼


rows = 768 ;
cols = 1024;
numf = 1;
Color = 'Color.yuv';
Depth = 'Depth.yuv';

%Stereoscopic view generation
[L R] = cd2lr(Color,Depth,rows, cols, numf);
figure, imshow(yuv2rgb(L{1}.luma,L{1}.chroma1,L{1}.chroma2));
figure, imshow(yuv2rgb(R{1}.luma,R{1}.chroma1,R{1}.chroma2));

%Stereoscopic view generation only luma components
[L R] = cd2lrluma(Color,Depth,rows, cols, numf);
figure, imshow(uint8(L{1}.luma));
figure, imshow(uint8(R{1}.luma));

3 參考文獻

4 參考文獻

《自由視點立體電視系統的虛擬視點合成技術研究》

相關焦點

  • 小波變換MATLAB圖像融合
    圖像融合可以克服單一圖像在幾何、光譜、和空間解析度等方面存在的局限性。而小波變換具有的正交性、非冗餘性以及完善的重構能力,有效彌補金字塔方法分解時的信息冗餘性以及重構過程中的不穩定性。小波變換的基本原理是繼承和發展了短時傅立葉變換局部化的思想,同時又克服了窗口大小不隨頻率變化等缺點,能夠提供一個隨頻率改變的「時間-頻率」窗口,是進行信號時頻分析和處理的理想工具。
  • 幾何變換--圖像裁剪
    >1 幾何變換介紹幾何變換:從新規定圖像內像素的幾何排列方式。幾何變換包括:縮放、旋轉、平移等。這些變換一般用於校正圖像處理引起的空間失真,或者通過將圖像配準到一個預定義的坐標系統中用於規範化該圖像(例如,將一幅航拍圖像配準到一個特定的地圖投影中,或者在立體視覺中對兩幅互相配對的圖像進行整形,使得行與外極限)。與點操作和局部濾波器不同,輸出圖像通常來說並不是來自同一個輸入像素位置。
  • 圖像特徵點、投影變換與圖像拼接
    藝術家也早就將投影變換應用到了畫作中,例如下面這幅圖左上角的人物腳下踩著的地面,就遵循投影變換中近大遠小的規律。而在全景拼接中,假如我們要把在不同相機中心位置拍攝的圖像通過投影變換拼接到一起時,會怎麼樣呢?比如下圖,我們要將圖像平面1和2通過投影變換到綠色線表示的共同平面上去,從而實現拼接,此時會怎樣呢?
  • Python 圖像處理實戰 | 圖像的灰度非線性變換之對數變換、伽馬變換
    1.圖像灰度非線性變換:DB=DA×DA/2552.圖像灰度對數變換3.圖像灰度伽瑪變換圖像灰度非線性變換:DB=DA×DA/255圖像的灰度非線性變換主要包括對數變換、冪次變換、指數變換、分段函數變換,通過非線性關係對圖像進行灰度處理,下面主要講解三種常見類型的灰度非線性變換
  • 【圖像處理】圖像直方圖、濾波、小波變換、分割處理系統matlab代碼
    matlab源碼 347個
  • MATLAB實驗:圖像增強——灰度變換、直方圖均衡化
    實驗基本原理與設計術語『空間域』指的是圖像平面本身,在空間與內處理圖像的方法是直接對圖像的像素進行處理。空間域處理方法分為兩種:灰度級變換、空間濾波。T應用於每個位置(x,y),以便在該位置得到輸出圖像g。在計算(x,y)處的g值時,只使用該領域的像素。灰度變換T的最簡單形式是使用領域大小為1×1,此時,(x,y)處的g值僅由f在該點處的亮度決定,T也變為一個亮度或灰度級變化函數。當處理單設(灰度)圖像時,這兩個術語可以互換。
  • 24、opencv圖像仿射變換
    執行這些操作的原因很多:例如,扭曲和旋轉圖像,以便它可以疊加在現有場景上或人為地放大用於對象識別的一組訓練圖像.可以執行的功能如拉伸,收縮,扭曲和旋轉圖像被稱為幾何變換。對於平面區域,有兩種風格的幾何變換:使用2×3矩陣的變換,稱為仿射變換;基於3×3矩陣進行變換,這被稱為透視變換。仿射變換是任何可以用矩陣乘法和矢量加法形式表示的變換。
  • halcon學習-相機標定與圖像徑向或透視畸變的校正
    (MapSingle, CamParam, PoseNewOrigin, 768, 576, 900, 800, 0.0025, 『bilinear』)生成一個投影映射圖,它描述了在一個世界坐標系中圖像平面與z=0平面(測量平面)之間的映射。
  • 【Matlab】【雷射雷達入門】【雷射雷達和相機校準】
    At the end of this example, you will be able to use the rigid transformation matrix to fuse lidar and camera data.本示例向您展示如何估算3D雷射雷達和相機之間的剛性變換。在本示例的最後,您將能夠使用剛性變換矩陣來融合雷射雷達和相機數據。
  • OpenCV系列之圖像的幾何變換 | 十四
    縮放縮放只是調整圖像的大小。為此,OpenCV帶有一個函數cv.resize()。圖像的大小可以手動指定,也可以指定縮放比例。也可使用不同的插值方法。旋轉圖像旋轉角度為θ是通過以下形式的變換矩陣實現的:
  • 【圖像去霧】直方圖均衡化+Retinex理論圖像去霧含GUI matlab源碼
    該方法的基本思想是把原始圖像的灰度統計直方圖變換為均勻分布的形式,這樣就增加了像素灰度值的動態範圍,從而達到增強圖像整體對比度的效果。數字圖像是離散化的數值矩陣,其直方圖可以被視為一個離散函數,它表示數字圖像中每一灰度級與其出現概率間的統計關係。
  • 基於FPGA圖像的鏡像
    幾何變換-鏡像鏡像的目的是將圖像進行翻轉,如圖1所示,美國懷俄明大提頓國家公園被水面鏡像。
  • 【圖像識別】基於PCA+SVM 表情識別評分系統matlab代碼
    收錄於話題 #圖像處理matlab源碼 347個
  • 《數字圖像處理 岡薩雷斯》灰度變換與空間濾波——學習筆記
    術語空間域指圖像平面本身, 這類圖像處理方法直接以圖像中的像素操作為基礎。
  • MATLAB數字圖像基礎筆記大全
    如果圖像數據沒有保存在MATLAB工作平臺中,可以通過使用getimage函數將從當前的句柄圖形圖像對象中獲取圖像數據。subimage函數在顯示圖像之前首先將圖像轉換為RGB圖像,因此不會出現調色板問題。該函數的語法格式為:subimage(X,map)   %在一個窗口裡顯示多個索引圖像。subimage(I)       %在一個窗口裡顯示多個灰度圖像。subimage(RGB)     %在一個窗口裡顯示多個真彩色圖像。
  • 如何用matlab對信號進行傅立葉變換
    傅氏變換分析是信號分析中很重要的方法,藉助matlab可以很方便的對各類信號進行傅氏頻域分析。
  • 在MATLAB中如何實現快速傅立葉變換
    對於傅立葉變換的類型:非周期連續信號採用傅立葉變化;周期連續信號採用傅立葉級數;非周期連續離散信號採用離散時間傅立葉變換;周期離散信號採用離散傅立葉級數。四種傅立葉變換總結如下表所示。表1繪製時域信號lear;clc;closealla=textread('C:\Users\Administrator\Desktop\matlab\FFT\TIME_X.txt'); %讀取時域數據y=a(:,2); %讀取時域數據Fs=6400; %採集頻率T=1/Fs; %採集時間間隔N=
  • MATLAB信號處理仿真-短時傅立葉變換,時、頻分辨力的蹺蹺板
    本次,我們將展示另外一個信號分析的有力工具,短時傅立葉變換。
  • 【opencv實踐】仿射變換和透視變換
    opencv中給出了仿射變換的函數接口:warpAffine( InputArray src, 輸入圖像 OutputArray dst, 輸出圖像 InputArray M, 仿射計算矩陣 Size dsize, 輸出圖像大小 int flags = INIET_LINEAR
  • Matlab圖像處理筆記
    關係運算>、<、==0x04 空間變換1.離散傅立葉變換(DFT)fft2():二維快速傅立葉變換2.離散餘弦變換(DCT)dct2():FFT算法,大輸入dctmtx():DCT變換矩陣,小輸入0x08 數學形態學膨脹和腐蝕strel():形態結構要素