第二章:生物组织光学特性——光在组织中的“旅行记”
大家好,我是你们的老朋友。今天我们来聊聊一个非常核心的话题:光进入生物组织后,到底经历了什么?
你可能觉得光就是直线传播的。但在生物组织里,情况要复杂得多。光会被吸收、被散射、被反射,也会透过去。这些过程,说白了,就是光与组织“打交道”的四种基本方式。
我个人习惯把这四种特性比作光在组织里的“四重奏”。它们共同决定了光能走多远、能照多深、能带回多少信息。搞懂它们,你才算真正入了生物光学的大门。
2.1 吸收:光被组织“吃掉”了
吸收,就是光能量被组织里的分子“吞掉”了。光能转化为热能或其他形式的能量,光本身就不存在了。
你想想看,为什么我们用手电筒照手指,手指会发红?因为血红蛋白对绿光吸收很强,红光透过去了。这就是吸收在起作用。
关键吸收体有哪些?
- 水:对红外光吸收很强。我记得做近红外光谱项目时,水峰总是个麻烦事。
- 血红蛋白:吸收可见光,尤其是蓝绿光。这也是血液呈红色的原因。
- 黑色素:在皮肤中,对紫外和可见光都有强吸收。
- 脂质:在近红外区域有吸收峰。
吸收系数 μa 表示光在组织中传播单位距离后被吸收的概率。单位是 cm⁻¹ 或 mm⁻¹。μa 越大,光被吸收得越快,穿透深度越浅。
我在做光动力疗法剂量设计时,发现很多新手只关注光源功率,却忽略了组织吸收。结果照了半天,光根本到不了靶区。记住:吸收决定了你的光能“喂”给了谁。
2.2 散射:光在组织里“迷路”了
散射,就是光碰到组织里的微小结构(如细胞核、线粒体、胶原纤维),方向被改变了。光没有消失,只是不再走直线。
为什么会这样?因为生物组织不是均匀的。你想想看,一杯水里滴几滴牛奶,光穿过时就会变得模糊。这就是散射。
散射的两种主要类型:
- 米氏散射:当散射粒子大小与光波长相近或更大时发生。比如细胞核(~5-10 μm)对可见光的散射。
- 瑞利散射:当散射粒子远小于波长时发生。比如胶原纤维的细微结构。
在大多数生物组织中,散射比吸收强得多。尤其是在近红外波段,散射系数 μs 通常是吸收系数的几十到几百倍。
散射系数 μs 表示光在单位距离内发生散射的概率。各向异性因子 g 描述散射的方向性:g=1 表示完全向前散射,g=-1 表示完全向后散射,g=0 表示各向同性散射。生物组织中 g 通常在 0.8-0.95 之间,说明光倾向于向前散射。
我曾经在设计光学成像系统时,忽略了散射的累积效应。结果在深层组织成像时,图像完全模糊了。后来才意识到,散射导致的有效衰减系数 μeff = √(3μa(μa+μs')) 才是真正的“穿透深度”决定因素。μs' = μs(1-g) 是约化散射系数。
2.3 反射:光在界面“碰壁”了
反射,就是光从一种介质进入另一种介质时,在界面上被弹回来了。这包括镜面反射(光滑表面)和漫反射(粗糙表面)。
在生物组织中,最典型的反射发生在空气-皮肤界面。大约 4-7% 的入射光会被直接反射掉。这就是为什么皮肤看起来有光泽。
反射的两种形式:
- 镜面反射:发生在光滑表面,如角膜。反射角等于入射角。
- 漫反射:发生在粗糙表面,如皮肤。光向各个方向反射。
我个人习惯用菲涅尔公式来估算反射率。对于垂直入射,反射率 R = ((n1-n2)/(n1+n2))²。空气 n≈1,皮肤 n≈1.4,算下来 R≈2.8%。但实际测量值更高,因为皮肤表面不是理想光滑的。
做皮肤光学测量时,我建议使用折射率匹配液(如甘油、矿物油)来减少表面反射。这能显著提高信噪比。我曾经在测皮肤血氧时,没涂匹配液,结果反射光干扰太大,数据根本没法用。
2.4 透射:光成功“穿越”了组织
透射,就是光穿过组织后,从另一侧出来了。透射光携带了组织内部的信息,是很多光学检测技术的基础。
透射光分为两种:
- 准直透射:光基本沿原方向穿过,没有发生散射。这只有在组织很薄或散射很弱时才可能。
- 漫透射:光经过多次散射后,从另一侧出射。方向已经随机化了。大多数生物组织中的透射都属于这种。
你想想看,为什么手指对着手电筒会发红?因为红光透射能力强,而蓝光被吸收了。这就是透射光谱分析的基本原理。
透射率 T = I_transmitted / I_incident。光学厚度 τ = (μa + μs) × d,其中 d 是组织厚度。τ >> 1 时,光几乎无法穿透;τ << 1 时,光可以轻松穿过。
2.5 四者如何协同影响光传播?
好了,现在我们把四个特性放在一起看。光在组织中的传播,是吸收、散射、反射、透射共同作用的结果。
一个简单的传播模型:
- 光到达组织表面,一部分被反射(镜面反射 + 漫反射)。
- 进入组织的光,一边被吸收(能量衰减),一边被散射(方向改变)。
- 经过多次散射和吸收后,一部分光从入射面逃逸(漫反射),一部分从对面出射(透射)。
说白了,这就是一个“光子在组织里随机游走”的过程。我常用蒙特卡洛模拟来追踪每个光子的命运。虽然计算量大,但结果非常直观。
| 组织类型 | μa (cm⁻¹) | μs (cm⁻¹) | g | μs' (cm⁻¹) |
|---|---|---|---|---|
| 皮肤(真皮) | 0.5 | 200 | 0.9 | 20 |
| 脑组织(灰质) | 0.2 | 100 | 0.95 | 5 |
| 肌肉 | 0.3 | 150 | 0.93 | 10.5 |
| 脂肪 | 0.1 | 80 | 0.85 | 12 |
注:μs' = μs(1-g) 是约化散射系数,用于描述各向异性散射的等效各向同性散射。
我曾经在计算光剂量时,直接用了 μa 和 μs 的原始值,结果发现模拟结果和实验差很远。后来才意识到,对于各向异性散射,必须用约化散射系数 μs' 和有效衰减系数 μeff。记住:不要被原始参数迷惑,实际传播行为由约化参数决定。
2.6 一个简单的 Python 模拟示例
下面是一个极简的蒙特卡洛模拟片段,展示光子在组织中的随机游走。虽然不完整,但能帮你理解核心逻辑。
# 极简光子随机游走模拟(仅示意)
import random
import math
def photon_step(mua, mus, g, step_size):
"""
模拟一个光子的单步传播
mua: 吸收系数
mus: 散射系数
g: 各向异性因子
step_size: 步长(通常取 1/mut)
"""
# 1. 吸收:光子权重衰减
weight = 1.0
weight *= math.exp(-mua * step_size) # 实际更复杂,这里简化
# 2. 散射:改变方向
# 使用 Henyey-Greenstein 相位函数
cos_theta = (1 + g*g - ((1 - g*g)/(1 - g + 2*g*random.random()))**2) / (2*g)
# 更新方向(省略具体坐标变换)
return weight, cos_theta
# 示例参数(皮肤组织,650 nm)
mua = 0.5 # cm⁻¹
mus = 200 # cm⁻¹
g = 0.9
mut = mua + mus # 总衰减系数
step = 1.0 / mut # 平均自由程
print(f"平均自由程: {step*1000:.2f} μm")
print(f"单步后光子权重: {photon_step(mua, mus, g, step)[0]:.4f}")
这段代码虽然简单,但体现了核心思想:光子在每一步都可能被吸收(权重衰减),也可能被散射(方向改变)。实际蒙特卡洛模拟需要追踪成千上万个光子,才能得到统计稳定的结果。
刚开始做模拟时,我总想一步到位写个完整的蒙特卡洛代码。结果 debug 到崩溃。我建议你先从单光子路径可视化开始,理解每一步的物理意义,再逐步增加复杂度。磨刀不误砍柴工。
2.7 小结:记住这四句话
- 吸收:光被“吃掉”了,能量转化为热能。决定穿透深度。
- 散射:光“迷路”了,方向改变。决定成像分辨率和信噪比。
- 反射:光在界面“碰壁”了。影响入射效率和表面信号。
- 透射:光成功“穿越”了。携带组织内部信息,是检测的基础。
这四个特性不是孤立的。它们共同决定了光在组织中的“命运”。搞懂它们,你就能理解为什么近红外光能穿透几厘米的脑组织,而紫外光只能停留在皮肤表面。你也能明白为什么光学相干断层扫描(OCT)能看清视网膜层结构,而漫反射光谱能测出血氧浓度。
嗯,这一章的内容就到这里。记住,这些概念是生物光学的基石。后面我们会反复用到它们。