簡體   English   中英

VTK將2D圖像轉換為3D(C ++)

[英]vtk convert 2d image to 3d (c++)

我已經讀了好幾天的doxygen和vtk wiki了,但我仍然不是100%地確定我要問的事情甚至可能。

我要完成的工作是以通用格式(即PNG)拍攝2d圖像並輸出3d模型(PNG-> Model / Mesh或2d-> 3d)。 一個很好的例子是,如果我在MS Paint中繪制一個多維數據集並將圖形另存為PNG,然后讀取圖像並生成該多維數據集的3D模型。 所以我的第一個問題是可能嗎? IT部門似乎應該采取某種方法來獲取圖像數據並將其轉換為多數據,然后從那里開始建立模型。 這就是我的想法(在C ++中):

int main(int argc, char *argv[])
{
//Verify correct number of input arguements 
if(argc < 2)
{
    fprintf(stderr, "Usage: %s Filename(.png)\n");
    return EXIT_FAILURE;
}   
std::string fileName = argv[1];
//Read file
vtkSmartPointer<vtkImageReader2Factory> readerFactory =         vtkSmartPointer<vtkImageReader2Factory>::New();
vtkImageReader2 *imageReader = readerFactory->CreateImageReader2(inputFilename.c_str());
imageReader->Update();

//Get the image Data
    vtkSmartPointer<vtkImageDataGeometryFilter> imageDataGeometryFilter = 
vtkSmartPointer<vtkImageDataGeometryFilter>::New();

imageDataGeometryFilter-> SetInputConnection(imageReader-> GetOutputPort()); imageDataGeometryFilter->更新();

因此,如果第一個問題的答案是肯定的,那么這似乎還遙遙無期嗎?

我懷疑VTK是否提供了將通用2d形狀處理為3d模型的現成算法。 這基本上是一個反問題,意味着解決方案可能很多。 如果不應用對象形狀的某些約束或假設,這將很困難。

VTK可能會幫助您表達處理圖像的步驟(例如,提取顯着特征,例如角和線),以及在數據結構中提供更多選擇。 在我看來,您的代碼中顯示的想法僅顯示了從2d到3d的一般處理流程,但是細節(例如幾何過濾器)可能需要由您自己實現。

您要完成的實際任務是一個算法問題,例如,這項工作在CAD領域(將清晰的2d工程圖繪制到3d模型中)具有研究興趣。

將3D對象投影到2D平面並柵格化不是一個可逆的過程,因為這樣做會丟失大量信息(深度,隱藏的曲面,拓撲等)。 您所能做的就是嘗試通過明智的猜測來恢復丟失的信息。

即使是具有立體視覺,相當大的並行處理能力和巨大的上下文信息數據庫(人類)的高度專業化的系統,也很容易被這一點( 光學錯覺錯視 畫法 )所迷惑。

用計算機來解決這個問題非常復雜,結果很可能令人失望。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM