2013年12月25日 星期三

HW4

這次的作業是3D立體影像攝影與程式實作

實作方法
首先,找好目標拿出手機或相機拍攝,在左眼的位置和右眼的位置各拍一張,再來標記好左眼與右眼的相片,接著開始打程式。

將左眼和右眼的影像輸入進去
左眼程式碼 :
if(OpenPictureDialog1->Execute())
{
Image12->Picture->LoadFromFile(OpenPictureDialog1->FileName);
iImageWidth = Image12->Picture->Width;
iImageHeight = Image12->Picture->Height;
}



右眼程式碼 :
if(OpenPictureDialog1->Execute())
{
Image13->Picture->LoadFromFile(OpenPictureDialog1->FileName);
iImageWidth = Image13->Picture->Width;
iImageHeight = Image13->Picture->Height;
}


分別將左右眼的影像輸入後接著是將兩張影像合併
將左眼影像紅色的色採資訊複製到新影像,右眼影像藍色和綠色的色彩資訊複製到新影像中。

程式碼 :
for(j=0;j<Image12->Picture->Height;j++)
{
bPtrImageRow1 = (Byte *)Image12->Picture->Bitmap->ScanLine[j];
bPtrImageRow2 = (Byte *)Image13->Picture->Bitmap->ScanLine[j];
bPtrImageRow3 = (Byte *)Image14->Picture->Bitmap->ScanLine[j];
for(i=0;i<Image12->Picture->Width;i++)
{
bPtrImageRow3[i*3] = bPtrImageRow1[i*3];
bPtrImageRow3[i*3+1] = bPtrImageRow1[i*3+1];
bPtrImageRow3[i*3+2] = bPtrImageRow2[i*3+2];
}
}

最後將影像存檔下來
 if(SavePictureDialog1->Execute())
{
Image14->Picture->SaveToFile(SavePictureDialog1->FileName);
}


完成的3D影像

這張是原本製作的3D圖,因為效果不是很好,所以重新製作了一張為上面幾張圖

================================================================
心得
做完之後發現我應該要把三個東西放在不同的位置,不應該是在同一個平行上,這樣看出來的結果就不太不顯。
其實一台相機分別拍攝出左眼影像和右眼影像並不難,但在我們做兩張影像合成完時,拿起3D眼鏡看才發現頭暈暈,做出來的結果不是很好,更何況是將一般的影片拍成3D影片,很開心的是我學會如何自己製作3D影像,步驟很簡單只是技術不好而已。

沒有留言:

張貼留言