跳轉到內容

MINC/工具/emma/emma-標籤

來自華夏公益教科書,開放的書籍,開放的世界

使用 MATLAB 進行標記區域分析

[編輯 | 編輯原始碼]

MATLAB 非常適合分析透過使用顯示程式收集的資料。此演示頁面簡要概述了可以對這些資料執行的一些分析。

這是一個使用 MATLAB 分析油漆(標籤)資料的演示。首先,我們必須選擇要分析的研究。這可以透過 EMMAopenimage函式來完成,該函式返回對研究的控制代碼

h=openimage('/data/disk2/wolforth/minc/farduharson_leslie_tal.mnc');

我們還可以從標籤檔案(由顯示).

tags = loadtagfile('/data/disk2/wolforth/minc/farduharson_right44.tag');

從標籤檔案中讀取的點座標以與它們派生的體積相同的空間表示。因此,如果體積儲存在 Talairach 空間中(在本例中),標籤檔案中的座標將位於 Talairach 空間中。為了識別哪些體素被標記,我們必須從體積的世界空間(在本例中為 Talairach 空間)轉換為體素空間。這可以透過world2voxel函式來完成

[x,y,z] = world2voxel(h,tags(:,1),tags(:,2),tags(:,3));

由於我們使用的體積儲存為橫向切片,我們可以透過簡單地檢查z座標來找出哪些切片對我們來說很有趣

>> min(z)

ans =

    44

>> max(z)

ans =

    85

透過檢查z座標,我們看到切片 65 位於有繪製點的切片中。我們可以使用 EMMA 載入此影像並將其顯示出來getimagesviewimage函式

MRI = getimages(h,65);
viewimage(MRI);

現在,讓我們製作一個掩碼,其中繪製的畫素設定為某個非零值,而未繪製的畫素設定為零。我們首先將掩碼初始化為全零

mask = zeros(256,256);

接下來,找到所有位於切片 65(我們感興趣的切片)內的點

index=find(z==65);
xi=x(index);
yi=y(index);

最後,將掩碼中繪製的體素設定為某個方便的值

for i=1:length(xi);
    mask(xi(i),yi(i)) = max(MRI) 500;
end

現在我們有了掩碼,我們可以檢視疊加在基礎結構上的繪製圖像。請注意,在將掩碼新增到變數之前,我們必須重新調整掩碼的形狀MRI因為MRI是一個列向量影像,而掩碼是一個方形矩陣。

viewimage (reshape(mask,length(MRI),1)   MRI);

檔案:TaggedMRI.gif

我們還可以獲取標記畫素的強度直方圖

[no,xo] = gettaggedhist(h,tags);

此直方圖可以使用 MATLAB 條形函式檢視。我們排除第一個箱,因為它包含了掩碼中的所有零

figure;
bar (xo(2:length(xo)), no(2:length(xo)));

檔案:Taggedhist.gif

我們還可以為整個影像上的畫素強度生成直方圖(這需要一些時間)。在這裡,我們指定要一個包含 50 個箱的直方圖

[n1,x1] = getvolumehist (h,50);

此直方圖也可以使用 MATLABbar函式來完成

figure;
bar (x1, n1);

檔案:Untaggedhist.gif

華夏公益教科書