近紅外光譜腦功能成像(fNIRS):1.光學原理、變量選取與預處理

一、朗伯-比爾定律與修正的朗伯-比爾定律

????????朗伯-比爾定律 是一個描述光通過溶液時被吸收的規律。想象你有一杯有色液體,比如一杯紅茶。當你用一束光照射這杯液體時,光的一部分會被液體吸收,導致透過液體的光變弱。朗伯-比爾定律告訴我們,透過液體的光的強度減少的程度與以下三個因素有關:

  1. 光的傳輸路徑長度:如果你增加液體的深度(即光穿過的路徑更長),光被吸收得更多,透過液體的光就更少。
  2. 吸光物質的濃度:如果液體中吸收光的物質(比如茶葉中的色素)更多,光被吸收得更多,透過液體的光就更少。
  3. 消光系數:這是一個物質的特性,表示這種物質吸收光的能力。不同的物質有不同的消光系數。

朗伯-比爾定律的數學表達式是:

OD=??C?L

其中:

  • OD是光密度(Optical Density),表示光被吸收的程度。
  • ??是消光系數,表示物質吸收光的能力。
  • C?是吸光物質的濃度。
  • L?是光穿過的路徑長度。

????????修正的朗伯-比爾定律 是在朗伯-比爾定律的基礎上考慮了光在生物組織中的散射效應。在生物組織中,光不僅會被吸收,還會因為與組織中的微粒碰撞而改變方向,這種現象叫做散射。散射使得光在組織中的實際路徑比直線更長,因此光被吸收得更多。

????????修正的朗伯-比爾定律考慮了這一點,并引入了兩個新的參數:

  1. 路徑長度修正因子(DPF):這個因子表示由于散射效應,光在組織中的實際路徑長度是直線長度的多少倍。
  2. 其他因素引起的光強衰減總和(G):這個參數表示除了吸光物質之外,其他因素(如顱骨、腦脊液等)引起的光強衰減。

????????修正的朗伯-比爾定律的數學表達式是:

OD=??C?DPF?L+G

????????在實際應用中,由于 G 很難測量,通常我們只關注吸光物質濃度的相對變化,而不是絕對值。通過測量不同時間點的光衰減量,并利用修正的朗伯-比爾定律,可以求解出血紅蛋白濃度的相對變化,這對于研究腦功能等生物學過程非常有用。

二、因變量與自變量選取

???????在認知心理學領域,fNIRS腦成像實驗通過操縱自變量(如不同刺激或行為)來記錄血液動力學響應的變化,以此作為因變量,探索認知功能的神經基礎。因變量在fNIRS研究中通常表現為血液動力學響應的變化,具體可以取的值包括氧合血紅蛋白和脫氧血紅蛋白的濃度變化、腦區血流量的變化等

????????自變量是實驗者可以操縱的因素,其不同取值稱為不同水平或條件。自變量可以通過操作化定義轉換為具體、可量化的指標,以便于實驗操作和結果分析。例如,受試者對任務的參與程度可以通過可能獲得的報酬數量來量化,通過設置不同等級的報酬來實現對受試者參與程度這個變量的操縱。自變量可以根據數據類型(類別變量或連續變量)、來源(作業/任務變量、環境變量、受試者變量)和可操作性進行分類。類別變量的例子如性別(男/女),連續變量的例子如學習成績(0—100的任意取值)。

????????單因素設計通過比較實驗條件與基線條件來計算神經響應指標。減法法則要求比較兩種任務的反應時差異,以分離特定認知過程的反應時。因變量在這種情況下可以取的值包括反應時、正確率等行為響應指標,以及神經活動引起的局部血液動力學響應。

????????共性法則通過多個減法實驗求得共性部分,提高腦區與認知成分關聯的可能性。因素設計同時操縱多個自變量,每個因素設置多個水平,以探索因素間的交互作用。因變量在因素設計中可以取的值包括不同實驗條件下神經活動的變化,如腦區血紅蛋白濃度的變化。

????????參數設計將感興趣的變量視為連續變量,通過在多個水平上觀察和記錄因變量的值,來確定自變量與神經響應之間的具體關系模式。因變量在參數設計中可以取的值包括隨著自變量變化,腦活動的變化模式,如線性或非線性關系。

三、數據預處理

  1. 去漂移(Detrending)

    • 原因成像系統(如機器)在工作過程中逐漸升溫環境溫度和光照的改變受試者緩慢的頭動,通常表現為較長時間范圍內的緩慢波動。這種漂移會使fNIRS信號的基線發生改變,影響信號的穩定性和準確性。
    • 方法:通過擬合信號中的線性或非線性趨勢項,然后從原始信號中減去這些趨勢項來實現去漂移。
    • 數學原理:去漂移是通過擬合信號中的線性或非線性趨勢項,然后從原始信號中減去這些趨勢項來實現的。
    • 公式:假設原始信號為?y(t),擬合的趨勢項為?T(t),去漂移后的信號為?y_{d}(t),則有:

      y_{d}(t) = y(t) - T(t)

  2. 周期性噪聲濾波(Filtering)

    • 原因:周期性噪聲包括機器噪聲(如工頻噪聲50Hz和隨機熱噪聲高于2Hz)和生理噪聲(如心率約1Hz、呼吸約0.2—0.3Hz、Mayer wave約0.1Hz和極低頻的生理波動低于0.01Hz)。這些噪聲成分具有明顯的周期性波動特點,會影響信號的純凈度。
    • 方法:通過高通濾波、低通濾波和帶通濾波等頻域濾波方法去除信號中具有明顯周期性波動特點的噪聲成分。
    • 數學原理:濾波是通過在頻域中去除特定頻率成分來實現的。高通濾波、低通濾波和帶通濾波是常用的濾波方法。
    • 公式:假設原始信號為?y(t),濾波后的信號為?y_{f}(t),濾波器的傳遞函數為?H(f),則有:

      Y_{f}(f) = Y(f) \cdot H(f)

  3. 頭動噪聲和淺層噪聲去除

    • 頭動噪聲去除
      • 原因:受試者頭動可能導致光極與頭皮接觸不良,這種頭動噪聲往往體現為信號中的大幅跳變。由于其出現時間和位置都較為隨機,傳統的頻域濾波預處理方法很難去除這種噪聲。
      • 方法:通過異常點檢測方法檢測到頭動噪聲,將任意時間點信號的幅值與一段時間內信號的平均幅值做對比,并且設置一定的閾限來標出異常點,然后去除這些異常點。
      • 數學原理:頭動噪聲通常表現為信號中的大幅跳變,可以通過異常點檢測方法來識別和去除。
      • 公式:假設信號的均值為?μ,標準差為?σ,閾值為?k,則異常點檢測公式為:異常點←∣y(t)?μ∣>k?σ
    • 淺層噪聲去除
      • 原因:頭皮、顱骨和腦膜等淺層組織中含豐富的毛細血管,呼吸、心跳等生理波動及任務相關的自主神經活動都會引起這些毛細血管中血紅蛋白濃度的變化,從而導致fNIRS光衰減量的變化(即淺層生理噪聲)。
      • 方法:通過短間隔通道法或空間濾波方法去除淺層噪聲。短間隔通道法利用額外的短間距fNIRS通道記錄淺層生理噪聲,再從信號中將其去除。
      • 數學原理:淺層噪聲可以通過短間隔通道法或空間濾波方法來去除。短間隔通道法利用額外的短間距fNIRS通道記錄淺層生理噪聲,然后從信號中減去這些噪聲。
      • 公式:假設淺層噪聲信號為?n(t),原始信號為?y(t),去除淺層噪聲后的信號為?y_{n}(t),則有:y_{n}(t) = y(t) - n(t)

四、Python代碼實現

代碼如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import detrend, butter, filtfiltnp.random.seed(0)  # 模擬生成
t = np.linspace(0, 100, 1000)
y = np.sin(0.1 * t) + 0.1 * np.random.randn(1000)  # 添加正弦信號和噪聲
y += 0.01 * t  # 添加線性漂移# 去漂移
y_detrend = detrend(y)# 周期性噪聲濾波
def butter_bandpass_filter(data, lowcut, highcut, fs, order=4):nyq = 0.5 * fslow = lowcut / nyqhigh = highcut / nyqb, a = butter(order, [low, high], btype='band')filtered = filtfilt(b, a, data)return filteredfs = 10  # 采樣頻率
lowcut = 0.5
highcut = 2.0
y_filtered = butter_bandpass_filter(y_detrend, lowcut, highcut, fs)# 頭動噪聲去除
def remove_spikes(data, threshold=3):mean = np.mean(data)std = np.std(data)outliers = np.abs(data - mean) > threshold * stddata_clean = np.copy(data)data_clean[outliers] = meanreturn data_cleany_no_spikes = remove_spikes(y_filtered)# 淺層噪聲去除(實際應用中需要額外的短間距通道數據)
y_no_shallow = y_no_spikes - 0.1 * np.random.randn(1000)  fig, axs = plt.subplots(5, 1, figsize=(10, 15), sharex=True)plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.size'] = 12
plt.rcParams['lines.linewidth'] = 1.5
plt.rcParams['lines.linestyle'] = '-'axs[0].plot(t, y, color='blue')
axs[0].set_title('Original Signal', fontsize=14)
axs[0].grid(True)axs[1].plot(t, y_detrend, color='green')
axs[1].set_title('Detrended Signal', fontsize=14)
axs[1].grid(True)axs[2].plot(t, y_filtered, color='red')
axs[2].set_title('Filtered Signal', fontsize=14)
axs[2].grid(True)axs[3].plot(t, y_no_spikes, color='purple')
axs[3].set_title('Signal without Spikes', fontsize=14)
axs[3].grid(True)axs[4].plot(t, y_no_shallow, color='orange')
axs[4].set_title('Signal without Shallow Noise', fontsize=14)
axs[4].grid(True)plt.xlabel('Time (s)', fontsize=14)
plt.tight_layout()
plt.show()

結果如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38874.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38874.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38874.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mmdetection3D指定版本安裝指南

1. 下載指定版本號 選擇指定版本號下載mmdetection3d的源碼,如這里選擇的是0.17.2版本 git clone https://github.com/open-mmlab/mmdetection3d.git -b v0.17.22. 安裝 cd mmdetection3d安裝依賴庫 pip install -r requirment.txt編譯安裝 pip install -v e .…

redis主從復制哨兵模式集群管理

主從復制: 主從復制是高可用Redis的基礎,哨兵和集群都是在主從復制基礎上實現高可用的。主從復制主要實現了數據的多機備份,以及對于讀操作的負載均衡和簡單的故障恢復。缺陷:故障恢復無法自動化;寫操作無法負載均衡&…

軟件測試與質量保證 | 云班課簡答題庫

目錄 第14章 質量相關簡答題 第15章 測試實際相關簡答題 第16章 測試基本相關簡答題 第14章 質量相關簡答題 1. 簡述基本的測量原則。 測量應該基于該應用領域正確的理論之上,并在測量的定義中確定測度的目標;每一個技術測量的定義應該具有一致性和客…

HbuilderX:安卓打包證書.keystore生成與使用

前置條件 已安裝jdk或配置好jre環境。 .keystore生成 打開cmd,切換到目標路徑,輸入以下命令, keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore 輸入密鑰庫口令(要記住), 然后輸入一系列信息, …

ui.perfetto.dev sql 查詢某個事件范圍內,某個事件的耗時并降序排列

ui.perfetto.dev sql 查詢某個事件范圍內,某個事件的耗時并降序排列 1.打開https://ui.perfetto.dev 導入Chrome Trace Json文件2.ParallelMLP.forward下的RowParallelLinear.forward3.點擊Query(SQL),在輸入框中輸入以下內容,按CtrlEnter,顯示查詢結果4.點擊Show timeline,點擊…

2024年07年01日 Redis數據類型以及使用場景

String Hash List Set Sorted Set String,用的最多,對象序列化成json然后存儲 1.對象緩存,單值緩存 2.分布式鎖 Hash,不怎么用到 1.可緩存經常需要修改值的對象,可單獨對對象某個屬性進行修改 HMSET user {userI…

Windows快速打開某個路徑下的PowerShell

按住Shift右鍵打開: 在桌面或者文件夾頁面中,按住右鍵,在彈出的右鍵菜單中選擇“在終端中打開”或“在此處打開Powershell窗口“,就可打開windows PowerShell界面,且路徑為桌面或打開的文件夾所在路徑。

淺談貝葉斯定理

引言 貝葉斯定理用于確定事件的條件概率。它以一位英國統計學家的名字命名,托馬斯貝葉斯他在1763年發現了這個公式。貝葉斯定理是數學中一個非常重要的定理,它為一種獨特的統計推斷方法奠定了基礎。貝氏推論它用于根據可能與事件相關的條件的先驗知識&a…

C++基礎(三):C++入門(二)

上一篇博客我們正式進入C的學習,這一篇博客我們繼續學習C入門的基礎內容,一定要學好入門階段的內容,這是后續學習C的基礎,方便我們后續更加容易的理解C。 目錄 一、內聯函數 1.0 產生的原因 1.1 概念 1.2 特性 1.3 面試題 …

用隨機森林算法進行的一次故障預測

本案例將帶大家使用一份開源的S.M.A.R.T.數據集和機器學習中的隨機森林算法,來訓練一個硬盤故障預測模型,并測試效果。 實驗目標 掌握使用機器學習方法訓練模型的基本流程;掌握使用pandas做數據分析的基本方法;掌握使用scikit-l…

三大常用集合

1.Set集合 在Java中,Set是一種集合類型,它是一種不允許包含重復元素的集合,每個元素在Set中是唯一的。Set接口的常用實現類有HashSet、TreeSet和LinkedHashSet。以下是關于Set集合的一些重要特點和用法: 特點: 不允…

什么是mysql的回表操作

MySQL中的“回表”操作是指在執行查詢時,由于索引結構的限制,數據庫系統需要從非聚集索引(Secondary Index)中找到主鍵值,然后使用這些主鍵值回溯到聚集索引(Clustered Index)中獲取完整的行數據…

珠江電纜,承載您夢想的每一度電

在現代社會,電力無處不在,它不僅是經濟發展的動力,更是每個人生活中不可或缺的能量來源。而在這個電力驅動的世界里,有一家企業默默地承載著千家萬戶的夢想,它就是珠江電纜。 連接夢想的每一度電 珠江電纜成立于2001…

使用Java實現單元測試:JUnit教程

使用Java實現單元測試:JUnit教程 大家好,我是微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 在軟件開發中,單元測試是保證代碼質量和功能正確性的重要手段之一。JUnit是Java語言中最流行…

絕區零國際服下載 一鍵下載絕區零國際服教程

絕區零是一款米哈游傾情打造的全新都市幻想動作角色扮演游戲。在游戲中,我們將扮演一名繩匠,這是為出于各種原因需要進入危險空洞的人提供指引的專業人士。您將與獨特的角色一起踏上冒險之旅,攜手探索空洞,對戰強大敵人&#xff0…

【狀態估計】線性高斯系統的狀態估計——離散時間的遞歸濾波

前兩篇文章介紹了離散時間的批量估計、離散時間的遞歸平滑,本文著重介紹離散時間的遞歸濾波。 前兩篇位置:【狀態估計】線性高斯系統的狀態估計——離散時間的批量估計、【狀態估計】線性高斯系統的狀態估計——離散時間的遞歸平滑。 離散時間的遞歸濾波…

ollama將模型永遠加載在顯存里

問題解析 我們在使用ollma部署大語言模型的時候,如果部署的模型尺寸較大,往往在第一次加載的時候需要花費大量的時間加載模型;等加載完成后,如果長時間不調用模型,我們會發現模型已經被釋放掉了,又要重新加載,導致體驗感極差. 這是為什么呢?因為在沒被調用時,ollama默認在顯…

Steam夏促怎么注冊 Steam夏促賬號注冊教程

隨著夏日的炙熱漸漸充斥著每一個角落,Steam平臺也趕來添熱鬧,推出了一系列讓人眼前一亮的夏季促銷活動。如果你也是游戲愛好者,我們肯定不能錯過這次的steam夏促。正直本次夏日促銷有著很多的游戲迎來史低和新史低,有各種各樣的游…

20240703在飛凌OK3588-C開發板上刷Rockchip原廠的Buildroot20220811

20240703在飛凌OK3588-C開發板上刷Rockchip原廠的Buildroot20220811 2024/7/3 18:25 詳細的刷機LOG: [BEGIN] 2024/7/3 18:18:49 rootRK3588:/# DDR Version V1.07 20220412 LPDDR4X, 2112MHz channel[0] BW16 Col10 Bk8 CS0 Row16 CS1 Row16 CS2 Die BW16 Size204…

TP8/6 更改后臺入口地址admin改為myadmin 隱藏真實后臺網址

原來www.xxx.com/admin 改后www.xxx.com/myadmin config/app.php // 應用映射(自動多應用模式有效)app_map > [admintest>admin],