Matplotlib - MRI結合EEG



MRI結合EEG指的是一種醫學影像技術,它結合了兩種不同的方法來研究大腦:磁共振成像(MRI)和腦電圖(EEG)。

MRI(磁共振成像) − MRI利用強大的磁場和無線電波建立人體內部的詳細影像,包括大腦。它幫助醫生觀察大腦的結構和解剖結構,檢測腫瘤、損傷或其他病症等異常情況。

EEG(腦電圖) − EEG透過將電極放置在頭皮上測量大腦中的電活動。它記錄由腦細胞(稱為神經元)產生的電脈衝模式。

當MRI和EEG結合使用時,它允許醫生和研究人員同時研究大腦的結構和活動。

Matplotlib中的MRI結合EEG

Matplotlib允許您建立將MRI影像與EEG資料整合的視覺化效果,從而能夠探索和分析大腦功能和連線性。

在Matplotlib中,沒有專門用於建立MRI結合EEG視覺化的函式。相反,您需要結合使用Matplotlib的繪圖函式將EEG資料疊加到MRI影像上。這涉及分別載入和處理MRI和EEG資料,然後使用Matplotlib將它們一起顯示在一個圖中。

您可以使用諸如imshow()之類的函式顯示MRI影像,並使用plot()或scatter()將EEG資料疊加到MRI影像上。此外,您可以使用Matplotlib提供的各種自定義選項調整圖形的外觀和佈局。

顯示MRI切片

在Matplotlib中,顯示MRI切片涉及視覺化三維MRI體積的單個二維橫截面。這使您可以檢查MRI掃描器捕獲的身體內部結構。您可以使用Matplotlib的繪圖函式(例如imshow())將MRI切片作為影像載入並顯示在圖中。

示例

在下面的示例中,我們使用np.random.rand生成合成MRI資料,建立一個表示MRI體素強度的隨機數3D陣列。我們使用Nibabel的nib.save將此合成MRI資料儲存到名為'sample_mri.nii.gz'的NIfTI檔案中。然後,我們使用nib.load從儲存的檔案中載入合成MRI資料,並使用Matplotlib的imshow()函式顯示MRI資料的單個切片(切片索引50)−

import matplotlib.pyplot as plt
import nibabel as nib
import numpy as np

# Generating sample MRI data
sample_data = np.random.rand(100, 100, 100)  

# Saving sample MRI data to a NIfTI file
nib.save(nib.Nifti1Image(sample_data, np.eye(4)), 'sample_mri.nii.gz')

# Loading sample MRI data
mri_img = nib.load('sample_mri.nii.gz')
mri_data = mri_img.get_fdata()

# Displaying a single MRI slice
plt.imshow(mri_data[:, :, 50], cmap='gray')
plt.title('Sample MRI Slice')
plt.axis('off')
plt.show()

輸出

以下是上述程式碼的輸出−

Displaying MRI Slice

繪製EEG訊號

在Matplotlib中繪製EEG訊號涉及視覺化從放置在頭皮上的電極記錄的電活動。EEG訊號表示大腦的神經活動隨時間變化,捕獲與各種大腦狀態和活動相關的電位變化。

在Matplotlib中,您可以使用plot()之類的函式繪製EEG資料以顯示訊號幅度隨時間變化。EEG圖通常在x軸上顯示時間,在y軸上顯示電壓或訊號幅度,使研究人員和臨床醫生能夠分析大腦活動模式、檢測異常情況並研究認知過程。

示例

在這裡,我們生成合成EEG資料,並使用Matplotlib的plot()函式繪製EEG訊號隨時間變化−

import matplotlib.pyplot as plt
import numpy as np

# Generating sample EEG data
# Sampling frequency (Hz)
fs = 1000
# Time vector (10 seconds)
t = np.arange(0, 10, 1/fs)
# Sample EEG signal
eeg_signal = np.sin(2 * np.pi * 10 * t) + 0.5 * np.random.randn(len(t))  

# Plotting EEG signal
plt.plot(t, eeg_signal)
plt.title('EEG Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.show()

輸出

執行上述程式碼後,我們將獲得以下輸出−

Plot EEG Signal

MRI疊加EEG電極

在Matplotlib中將EEG電極疊加到MRI影像上涉及結合兩種不同型別的醫學資料進行視覺化。MRI提供有關大腦結構的詳細解剖資訊,而EEG電極則捕獲來自大腦表面的電訊號。透過將EEG電極疊加到MRI影像上,研究人員和臨床醫生可以將大腦活動與特定大腦區域相關聯。

您可以在Matplotlib中透過使用imshow()函式繪製MRI影像,然後使用符號或標記疊加EEG電極位置來實現此疊加。

示例

以下示例使用Matplotlib生成MRI影像並在單個MRI切片上疊加EEG電極位置−

import matplotlib.pyplot as plt
import numpy as np

# Generating synthetic MRI data
mri_shape = (100, 100, 100)  
mri_data = np.random.rand(*mri_shape)  

# Generating sample EEG electrode positions (x, y coordinates)
eeg_electrodes = np.array([[30, 40], [50, 60], [70, 80]])  

# Displaying a single MRI slice
plt.imshow(mri_data[:, :, 50], cmap='gray')

# Overlaying EEG electrode positions
plt.scatter(eeg_electrodes[:, 0], eeg_electrodes[:, 1], color='red', marker='o', label='EEG Electrodes')

# Adding legend
plt.legend()

# Adding title and axis labels
plt.title('MRI Slice with EEG Electrodes')
plt.xlabel('X')
plt.ylabel('Y')

# Displaying plot
plt.show()

輸出

執行上述程式碼後,我們將獲得以下輸出−

MRI Overlay with EEG Electrodes
廣告