slicer軟件中RAS轉(zhuǎn)換為像素坐標(biāo)方法

數(shù)據(jù)是醫(yī)學(xué)圖像中的MRI圖像狞尔。要求完成圖像中RAS坐標(biāo)到tensor矩陣坐標(biāo)的轉(zhuǎn)化撒轮。

RAS坐標(biāo):原始坐標(biāo),單位為mm醇锚。
像素坐標(biāo):nii文件作為矩陣數(shù)據(jù)的坐標(biāo)哼御,單位為像素坯临。

轉(zhuǎn)換所需的數(shù)據(jù):
使用Volume Information中的“Image Spacing”,“Image Origin”恋昼,“IJK to RAS Direction Matrix”三部分信息看靠。
以467859號(hào)的fixT1W1.nii為例。
三部分信息如下圖所示:


slicer中volume information的截圖

將Volume Information中的“Image Spacing”液肌,“Image Origin”挟炬,“IJK to RAS Direction Matrix”三部分信息分別賦值為python中的space,origin,matrix三個(gè)全局變量。

轉(zhuǎn)化公式如下:
coordinate = (matrix)^{-1}*(ras-origin)/space \\ ras = matrix*coordinate*space+origin

注:如果是nii格式數(shù)據(jù)矩屁,可以使用python讀取這三個(gè)數(shù)據(jù):

import SimpleITK
file = ....
img = SimpleITK.ReadImage(file)
origin = img.GetOrigin()
direction = np.array(img.GetDirection())
space = np.array(img.GetSpacing())

注意辟宗,用SimpleITK讀取的數(shù)據(jù)和3D Slicer看到的數(shù)據(jù)可能有部分正負(fù)號(hào)的區(qū)別,即他們的RAS坐標(biāo)有些坐標(biāo)軸正負(fù)相反吝秕。最好自己確認(rèn)一下泊脐。

例子:
在slicer軟件中任意取一個(gè)RAS坐標(biāo)點(diǎn),如下圖所示


軟件截圖

截圖時(shí)鼠標(biāo)在圖中左上方紅色五角星位置烁峭,右下方綠線表示此時(shí)鼠標(biāo)位置的RAS坐標(biāo)為(29.6,37.6,6.1)容客。對(duì)應(yīng)的矩陣中的坐標(biāo)為(86,218约郁,119)缩挑。

python代碼:

# 坐標(biāo)轉(zhuǎn)換:RAS(單位:mm)平移,旋轉(zhuǎn)鬓梅,縮放供置,得到像素坐標(biāo)。
import numpy as np

origin = np.array([53.0123, 79.2142, 66.5104]).T
space = 0.293
# IJK to RAS Direction Matrix
matrix = np.array([
    [-0.9990, 0.0026, 0.0436],
    [-0.0436, -0.0920, -0.9948],
    [0.0014, -0.9958, 0.0920]
])


def ras_to_coordinate(ras, origin, matrix, space):
    """RAS到像素坐標(biāo)coordinate的轉(zhuǎn)化
    """
    ras = ras - origin
    ras = np.matmul(np.linalg.inv(matrix), ras)
    coordinate = ras / space
    return coordinate


def coordinate_to_ras(coordinate, origin, matrix, space):
    """像素坐標(biāo)coordinate到RAS的轉(zhuǎn)化
    """
    ras = coordinate * space
    ras = np.matmul(matrix, ras)
    ras = ras + origin
    return ras


if __name__ == "__main__":
    # ras = np.array([29.6, 37.6, 6.1]).T
    # coordinate = [86, 218, 119]

    print("RAS to coordinate:")
    ras = np.array(
        [29.6, 37.6, 6.1]
    )
    print("input RAS : ", ras)
    coordinate = ras_to_coordinate(
        ras, origin=origin, matrix=matrix, space=space)
    print("output coordinate : ", coordinate)

    print("coordinate to RAS:")
    coordinate = np.array(
        [86., 218., 119.]
    )
    print("input coordinate : ", coordinate)
    ras = coordinate_to_ras(
        coordinate, origin=origin, matrix=matrix, space=space)
    print("output RAS : ", ras)

輸出為:

RAS to coordinate:
input RAS :  [29.6 37.6  6.1]
output coordinate :  [ 85.73972512 218.14819897 118.83805793]
coordinate to RAS:
input coordinate :  [ 86. 218. 119.]
output RAS :  [29.5257716 37.5534676  6.147712 ]

雖然不是完全相同绽快,但是大概能用吧芥丧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市坊罢,隨后出現(xiàn)的幾起案子续担,更是在濱河造成了極大的恐慌,老刑警劉巖活孩,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件物遇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡憾儒,警方通過(guò)查閱死者的電腦和手機(jī)询兴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)起趾,“玉大人蕉朵,你說(shuō)我怎么就攤上這事⊙羝” “怎么了始衅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵冷蚂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我汛闸,道長(zhǎng)蝙茶,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任诸老,我火速辦了婚禮隆夯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘别伏。我一直安慰自己蹄衷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布厘肮。 她就那樣靜靜地躺著愧口,像睡著了一般。 火紅的嫁衣襯著肌膚如雪类茂。 梳的紋絲不亂的頭發(fā)上耍属,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音巩检,去河邊找鬼厚骗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛兢哭,可吹牛的內(nèi)容都是我干的领舰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼迟螺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冲秽!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起煮仇,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劳跃,失蹤者是張志新(化名)和其女友劉穎谎仲,沒(méi)想到半個(gè)月后浙垫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郑诺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年夹姥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辙诞。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辙售,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出飞涂,到底是詐尸還是另有隱情旦部,我是刑警寧澤祈搜,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站士八,受9級(jí)特大地震影響容燕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜婚度,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一蘸秘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝗茁,春花似錦醋虏、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至忍坷,卻和暖如春粘舟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背佩研。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工柑肴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旬薯。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓晰骑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绊序。 傳聞我的和親對(duì)象是個(gè)殘疾皇子硕舆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容