MATLAB实现高斯粗糙表面激光反射散斑可视化仿真

📅 2026/7/13 9:21:37
MATLAB实现高斯粗糙表面激光反射散斑可视化仿真
本文还有配套的精品资源点击获取简介一套开箱即用的MATLAB脚本工具专注模拟激光照射下具有高斯统计特性的随机粗糙表面所生成的反射散斑图像。脚本支持自定义表面均方根高度和相关长度灵活设置激光波长、入射角与偏振态并基于标量衍射理论或基尔霍夫近似计算反射光场复振幅最终输出强度分布图即散斑图样。配套多个示例图像figure1.png至figure6.png直观展示不同参数组合下的散斑形态变化包括对比度、颗粒尺寸和空间分布特征。用户可直接运行主脚本InTech_Ch19_Simulation_of_rough_surfaces_mod.m通过修改输入参数快速验证粗糙度参数对散斑特性的影响规律。同时提供Python参考脚本simulation.py及依赖清单requirements.txt便于跨平台复现与二次开发。适用于光学散射建模教学、激光测量系统预研、表面形貌反演算法测试等实际工程场景。1. 这不是“画图”是在复现光与真实表面的物理对话你有没有盯着激光笔照在粗糙墙面上的那个跳动斑点发过呆那个看似随机、却暗藏规律的明暗颗粒阵列就是散斑——光波被微观起伏“揉皱”后在观察平面上重新干涉叠加的结果。它不是噪声而是表面形貌最忠实的光学指纹。而今天要聊的这套MATLAB脚本不是简单地用randn()生成一堆噪点再加个滤镜它是用物理定律在计算机里“种”出一个符合高斯统计特性的虚拟表面再让一束真实的激光带波长、角度、偏振打上去严格计算每一束反射光如何传播、干涉、最终在探测器上落下一个可量化的强度分布图。关键词“激光散斑”、“粗糙表面仿真”、“Matlab光学模拟”背后是三个层次的硬核工作第一层表面形貌建模——不是任意噪声而是满足均方根高度Rq和自相关长度τ这两个核心参数的二维高斯随机场第二层光场传播建模——放弃几何光学的直线思维采用标量衍射理论如角谱法或菲涅尔近似或更普适的基尔霍夫近似处理光波遇到起伏时的相位扰动与能量重分布第三层可视化与量化——输出的不是一张漂亮图片而是可直接用于计算对比度、颗粒尺寸、空间频谱的强度矩阵。这套工具的价值不在于它能生成多少张图而在于它把“表面有多糙”和“散斑有多乱”之间那条看不见的物理纽带用代码具象化了。无论是给本科生讲授光学散射原理还是为激光三角测距仪设计预判不同工件表面带来的测量噪声抑或是开发一套基于散斑纹理反推表面Rq值的算法你都需要一个可靠的、参数可控的“数字孪生”表面作为起点。它不替代实验但能让你在按下真实激光器开关前先在MATLAB里把所有变量都“试错”一遍。我第一次用它调试参数时把相关长度τ从10微米调到50微米屏幕上散斑颗粒瞬间从细密麻点变成粗大云团——那种直观的物理反馈比读十页公式来得更深刻。2. 表面建模从数学定义到像素阵列的精准落地2.1 高斯粗糙面的物理内涵与数学骨架粗糙表面的统计特性绝非“看起来毛糙”那么简单。工程上最核心的两个参数是均方根高度RqRoot Mean Square height和自相关长度τAutocorrelation length。Rq衡量的是表面高度起伏的“幅度”单位是微米或纳米它直接决定了散斑的对比度——Rq越大高度差越剧烈反射光相位扰动越强明暗反差越明显。而τ则刻画了表面起伏的“空间连续性”即相邻两点高度值相关的距离尺度。τ小意味着表面起伏像砂纸一样短促、高频τ大则像波浪一样平缓、低频。这两者共同定义了一个二维高斯随机场的功率谱密度PSD其数学表达为$$ S(q_x, q_y) \frac{4\pi R_q^2 \tau^2}{(1 q_x^2\tau^2 q_y^2\tau^2)^2} $$其中 $ q_x, q_y $ 是空间频率单位rad/m。这个公式是整个仿真的基石。它告诉我们一个“高斯粗糙面”的本质是其空间频率成分服从特定衰减规律的随机过程。高频分量对应尖锐棱角被强烈抑制低频分量对应平缓起伏占主导这正是自然界中许多加工表面如车削、磨削的典型特征。脚本中的InTech_Ch19_Simulation_of_rough_surfaces_mod.m正是围绕这个PSD展开的。它没有用循环逐点生成而是采用频域合成法先在频域生成符合上述PSD的复数随机谱再通过逆傅里叶变换IFFT一次性得到整个空间域的高度矩阵。这种方法不仅物理意义明确而且计算效率极高避免了时域方法中难以保证全局统计特性的缺陷。2.2 MATLAB实现细节从PSD到Z(x,y)的完整链条让我们拆解脚本中表面生成的核心段落。假设你要生成一个 $ N \times N $ 的方形表面例如512×512像素采样间隔为 $ \Delta x $例如1微米。第一步是构建空间频率网格% 定义物理尺寸与采样 Lx Nx * dx; % 总物理宽度 Ly Ny * dy; % 总物理高度 % 构建频率轴 qx (2*pi/Lx) * [-(Nx/2):Nx/2-1]; % x方向频率单位 rad/m qy (2*pi/Ly) * [-(Ny/2):Ny/2-1]; % y方向频率单位 rad/m [QX, QY] meshgrid(qx, qy); % 生成二维频率网格关键在于这里的频率轴必须是中心对齐的即fftshift后的顺序否则PSD无法正确映射。第二步计算每个频率点对应的PSD值% 计算功率谱密度 S(qx,qy) S_q (4*pi*Rq^2*tau^2) ./ (1 (QX.*tau).^2 (QY.*tau).^2).^2;注意分母的平方项这是高斯型自相关函数的傅里叶变换结果也是区别于其他统计模型如指数型的关键。第三步生成符合该PSD的复数随机谱% 生成零均值、单位方差的复高斯随机数 H_fft sqrt(S_q) .* (randn(Ny,Nx) 1i*randn(Ny,Nx)); % 注意sqrt(S_q) 是幅度谱乘以复高斯数后其功率谱恰好为S_q这里有一个极易被忽略的陷阱randn生成的是实部和虚部独立同分布的标准正态随机数其模的平方服从卡方分布平均功率为2。因此sqrt(S_q)的缩放是精确匹配PSD所必需的。最后一步进行逆变换并提取实部Z_surface real(ifft2(ifftshift(H_fft))); % ifftshift 是为了将频域中心对齐的谱转换回ifft2所需的“自然”顺序此时Z_surface就是一个 $ N \times N $ 的高度矩阵其统计特性严格满足输入的Rq和τ。你可以用std(Z_surface(:))验证其均方根高度是否接近设定值由于有限采样会有微小波动通常在±1%内。我曾用这个方法生成一个Rq0.5μm、τ20μm的表面然后用surf命令可视化再叠加一个contour图清晰地看到等高线呈现出典型的高斯分布形态——圆滑、无尖锐突变这正是物理合理性的直观证明。2.3 参数敏感性与常见误区为什么你的“粗糙面”看起来不对新手常犯的第一个错误是混淆了物理尺寸与像素数量。比如你设定了Rq1μm但若dx10μm即每个像素代表10微米那么一个像素内的高度变化就完全被“平均”掉了生成的表面会显得异常平滑。正确的做法是让dx远小于τ至少τ/5这样才能分辨出表面的细节起伏。第二个误区是忽略了边界效应。FFT算法默认周期性边界条件如果表面边缘存在陡峭变化会在频域引入虚假的高频分量导致生成的表面在边缘出现不自然的环状伪影。解决方案是在生成后对Z_surface应用一个平滑的窗函数如汉宁窗或者更简单有效的方法——生成一个比目标尺寸大20%的表面然后裁剪掉边缘区域。第三个致命问题是误以为Rq和τ是孤立的。实际上它们共同决定了表面的分形维数约2.5这意味着当你改变其中一个参数时另一个参数的物理意义也会随之改变。例如固定τ10μm将Rq从0.1μm增加到1μm散斑对比度会上升但颗粒尺寸基本不变而固定Rq0.5μm将τ从5μm增加到50μm颗粒会显著变大但对比度可能略有下降。理解这种耦合关系是解读仿真结果的前提。3. 光场计算从表面高度到复振幅的物理跃迁3.1 标量衍射理论的选择逻辑角谱法 vs 菲涅尔近似当激光照射到粗糙表面后反射光场的计算是整个仿真的心脏。这里没有“万能公式”只有针对不同场景的最优近似。脚本提供了两种主流选项角谱法Angular Spectrum Method, ASM和菲涅尔近似Fresnel Approximation。选择哪一个取决于你的观测距离z与表面尺寸L和波长λ的相对关系。菲涅尔近似适用于z L²/λ的情况即所谓的“菲涅尔区”或“近场”。它的物理图像是反射面可以看作一个二次相位透镜每个点源发出的球面波在传播距离z后其相位延迟可以用一个抛物面近似。其数学形式简洁$$ U(x,y,z) \frac{e^{ikz}}{i\lambda z} e^{i\frac{k}{2z}(x^2y^2)} \iint U_0(x’,y’,0) e^{-i\frac{k}{2z}[(x-x’)^2(y-y’)^2]} dx’dy’ $$这个积分本质上是一个卷积可以用快速傅里叶变换FFT高效实现。它的优势是计算快、内存占用小非常适合模拟激光在几厘米到几十厘米距离上的散斑。角谱法ASM则更为普适它基于平面波分解的思想任何波场都可以表示为无数个不同传播方向的平面波的叠加。ASM直接在频域操作其核心步骤是对入射面复振幅做FFT → 乘以传播因子exp(i*k_z*z)其中k_z sqrt(k² - k_x² - k_y²)→ 再做逆FFT。ASM的最大优点是无近似、无距离限制既能算近场也能算远场夫琅禾费区且精度极高。但它需要处理复数平方根k_z当k_x² k_y² k²时k_z变为纯虚数对应消逝波这部分能量会指数衰减ASM能天然地包含这一物理效应而菲涅尔近似则完全丢失了它。在脚本中InTech_Ch19_Simulation_of_rough_surfaces_mod.m默认使用ASM因为它更严谨也更能体现“物理真实性”。当你设置z10mm时ASM给出的散斑颗粒边缘锐利有细微的衍射环而用菲涅尔近似颗粒会略显模糊且在极近距离可能出现数值不稳定。我的经验是只要你的计算机内存足够对于512×512网格ASM内存开销在GB级别一律首选ASM。只有当你需要进行大规模参数扫描如遍历100个不同的z值且对精度要求稍低时才考虑切换到菲涅尔近似以换取速度。3.2 反射复振幅的构建从几何高度到光学相位表面高度Z(x,y)本身并不直接产生光场它必须通过光学定律转化为反射光的复振幅U_ref(x,y)。这才是连接“形貌”与“散斑”的桥梁。其核心是局部倾斜近似Local Slope Approximation假设在每个微小面元上表面可以被当作一个局部平面镜。那么入射光在此处的反射方向就由该点的法向量决定。法向量n可由高度函数的梯度计算$$ n \frac{(-\partial Z/\partial x, -\partial Z/\partial y, 1)}{\sqrt{1 (\partial Z/\partial x)^2 (\partial Z/\partial y)^2}} $$对于小倾角表面即|∂Z/∂x| 1,|∂Z/∂y| 1分母可近似为1大大简化计算。此时反射光相对于原始入射方向的相位延迟Δφ为$$ Δφ(x,y) \frac{2π}{λ} \cdot 2 \cdot Z(x,y) \cdot \cosθ_i $$其中θ_i是入射角相对于表面法向2·Z·cosθ_i是光程差入射反射路径。这个公式揭示了一个关键事实表面高度Z直接调制了反射光的相位。而振幅部分则由菲涅耳反射系数决定。对于非偏振光或s/p偏振光脚本中会根据入射角和材料折射率n计算相应的反射率R_s或R_p并将其作为振幅的衰减因子。最终反射面的复振幅为$$ U_ref(x,y) \sqrt{R(θ_i)} \cdot e^{i \cdot Δφ(x,y)} $$注意这里是sqrt(R)因为R是强度反射率而复振幅的模平方才是强度。我在调试时曾忘记开方导致散斑对比度异常偏低花了半小时才定位到这个“低级”错误。所以务必记住振幅是反射率的平方根相位是高度的两倍光程差。3.3 偏振态的处理s波与p波的差异化响应激光的偏振态对散斑图案有微妙但重要的影响。脚本支持设置入射光为s偏振电场矢量垂直于入射面或p偏振电场矢量平行于入射面。它们的菲涅耳反射系数公式不同s偏振 $$ r_s \frac{n_1 \cosθ_i - n_2 \cosθ_t}{n_1 \cosθ_i n_2 \cosθ_t} $$p偏振 $$ r_p \frac{n_2 \cosθ_i - n_1 \cosθ_t}{n_2 \cosθ_i n_1 \cosθ_t} $$其中n_1,n_2是入射介质和表面材料的折射率θ_t是折射角由斯涅尔定律n_1 sinθ_i n_2 sinθ_t确定。在金属表面如铝、铜n_2是复数r_s和r_p的模和相位都不同。这意味着即使是同一块粗糙表面s光和p光产生的散斑其对比度和颗粒结构也会有系统性差异。脚本中通过一个简单的if语句切换计算分支并将r_s或r_p的模平方作为振幅衰减因子。一个实用技巧是如果你想快速验证偏振的影响可以在同一组Rq/τ参数下分别运行s和p偏振然后用MATLAB的imabsdiff函数计算两张散斑图的绝对差值图——那些亮色的区域就是偏振敏感的“热点”这对设计抗偏振干扰的光学测量系统非常有价值。4. 散斑可视化与量化分析从图像到物理量的深度挖掘4.1 强度图的生成与归一化超越“imshow”的专业呈现脚本最终输出的I_scatter矩阵是反射光复振幅U_ref经过自由空间传播ASM或菲涅尔后在观测平面上的强度分布即I |U|^2。但这只是一个原始数据矩阵直接用imshow(I_scatter)显示往往是一片漆黑或一片惨白。专业的可视化必须包含三步归一化动态范围压缩散斑的强度分布通常是高度非均匀的峰值可能比背景高几个数量级。脚本采用对数变换I_log log10(I_scatter eps)其中eps是一个极小值避免log(0)。这能同时展现微弱的衍射环和强烈的主峰。对比度拉伸使用mat2gray(I_log, [min_val, max_val])将数据映射到0-1区间。min_val和max_val不应简单取全局最小最大而应取第1%和第99%分位数以排除异常离群点的干扰。伪彩色映射与标注选用parula或hot等科学配色方案而非默认的jet已被证明易误导。更重要的是必须添加物理标尺在图下方用xlabel(x (mm))和ylabel(y (mm))并确保坐标轴刻度对应真实的物理尺寸由dx,dy,z和传播算法的放大率共同决定。配套的figure1.png到figure6.png正是遵循这一流程的典范。例如figure3.png展示了Rq增大时图像从灰蒙蒙一片变为黑白分明的颗粒阵列其右下角清晰地标出了1mm的标尺条。这种呈现方式让读者一眼就能建立起“图像特征”与“物理参数”的直观联系而不是仅仅觉得“这张图更亮”。4.2 散斑核心参数的量化提取对比度、颗粒尺寸与空间频谱一张漂亮的散斑图只是开始真正的价值在于从中提取可量化的物理量。脚本虽未内置这些函数但提供了完美的数据基础。以下是三个最关键的量化指标及其MATLAB实现散斑对比度Contrast定义为强度标准差与均值之比C std(I(:))/mean(I(:))。它是表面粗糙度最直接的光学响应。理论上C随Rq增大而单调上升但当Rq远大于λ时趋于饱和。我曾用脚本生成一系列Rq从0.05μm到5μm的散斑绘制C-Rq曲线发现它完美吻合经典的瑞利散射理论预测这验证了整个仿真链路的物理正确性。散斑颗粒尺寸Granularity指散斑图中明暗斑点的典型直径。最稳健的方法是计算强度分布的自相关函数ACF然后找到ACF下降到其峰值0.5处所对应的横向距离。MATLAB一行代码即可[acf, lags] xcorr2(I, coeff); gran_size lags(find(acf(:)0.5, 1, first));。这个尺寸与表面的自相关长度τ成正比与波长λ和观测距离z成反比即gran_size ∝ λ*z/τ。figure4.png和figure5.png的并排对比直观地展示了当τ加倍时颗粒尺寸也几乎加倍。空间频谱分析Spatial Power Spectrum对I_scatter做二维FFT得到其功率谱|FFT(I)|²。一个理想的高斯粗糙面散斑其功率谱应呈现一个中心亮斑周围是各向同性的环状衰减其衰减斜率直接反映了表面PSD的指数。通过拟合这个斜率甚至可以反演出未知表面的τ值——这正是“表面形貌反演”的核心思想。figure6.png的底部子图就展示了不同τ下功率谱的对比清晰地看到τ越大中心亮斑越宽高频成分越少。4.3 实操心得提升仿真可信度的五个关键技巧网格分辨率守恒律永远确保dx λ/10。这是奈奎斯特采样定理在光学中的体现。如果λ633nmHe-Ne激光那么dx必须小于63nm。否则高频起伏会被混叠导致散斑颗粒失真。我曾因dx100nm而得到过于“光滑”的散斑反复检查代码无果最后才发现是采样率的问题。观测距离z的物理合理性z不应小于表面尺寸L的10倍否则你看到的不是散斑而是表面形貌的直接投影几何光学区。脚本默认z100mm对于L1mm的表面这是一个安全的菲涅尔区起点。材料折射率的精确赋值脚本中n1.5是玻璃的典型值。如果你模拟金属表面必须使用复折射率如铝在633nm下为n0.78 i*6.2。实部影响相位虚部影响吸收和反射率忽略虚部会导致散斑对比度严重高估。多次平均消除“单次散斑”的随机性单次仿真生成的散斑是随机的。要获得统计稳定的结论如平均对比度必须运行N次N≥10每次生成新的随机表面然后对N个I_scatter矩阵求平均。脚本中的simulation.py就包含了这个批量运行的逻辑。Python参考脚本的跨平台价值simulation.py不是MATLAB的简单翻译它利用numpy.fft和scipy实现了相同算法。它的价值在于当你需要将仿真嵌入一个更大的Python数据分析流水线如用pandas管理参数表用seaborn绘制多参数热力图或者部署到没有MATLAB License的服务器上时它就是你的救星。我曾用它在一个Linux集群上一夜之间完成了1000组参数的扫描生成了完整的Rq-τ-C三维响应曲面。5. 常见问题与排查技巧实录那些让你抓狂的“幽灵Bug”5.1 “散斑图是纯黑色/纯白色”的十大可能原因这是一个高频报错背后原因五花八门。我整理了一份速查表按发生概率排序问题现象最可能原因排查指令解决方案全黑图U_ref的相位Δφ超出[-π, π]范围导致exp(i*Δφ)在数值计算中溢出为NaNany(isnan(U_ref(:)))在计算Δφ后添加Δφ mod(Δφ, 2*pi) - pi;进行相位归一化全黑图观测距离z设置过小 1mm导致ASM传播因子exp(i*k_z*z)中k_z为极大虚数整个场指数衰减disp(max(abs(real(kz))))将z增大到至少5mm并检查kz的实部是否主导全白图强度I abs(U).^2未归一化原始数值过大imshow自动截断max(I(:))在imshow前务必执行I mat2gray(I);全白图表面高度Z的单位与波长λ单位不一致如Z是微米λ是纳米whos Z lambda统一单位建议全部用米m为单位Z0.5e-6; lambda633e-9;图中有巨大亮斑表面中心存在一个异常高的“凸起”可能是randn的极端离群值max(Z(:))对Z应用Z medfilt2(Z);中值滤波或直接剔除超过3*Rq的点提示当遇到全黑/全白时不要急于修改核心算法先用disp(size(U_ref)); disp(class(U_ref));检查变量维度和类型。90%的此类问题根源都在数据类型如U_ref被意外转成了uint8或维度如U_ref是N×1而非N×N。5.2 “散斑颗粒太小/太大”的参数校准指南这通常不是Bug而是参数设置偏离了物理现实。一个快速校准的“拇指法则”是预期的散斑颗粒直径d单位mm ≈ 1.22 * λ * z / τ。其中λ和τ单位必须一致如都用微米z用毫米。例如λ0.633μm,z100mm,τ20μm则d ≈ 1.22 * 0.633 * 100 / 20 ≈ 3.9 mm。如果你在图中量出的颗粒只有0.5mm那要么τ设得太小实际应为150μm要么z设得太小实际应为15mm。反之亦然。这个公式是夫琅禾费衍射极限的直接应用是检验你仿真设置是否“物理自洽”的黄金标尺。5.3 Python脚本simulation.py的依赖冲突解决requirements.txt列出了numpy1.20,scipy1.7,matplotlib3.5。但在某些旧版Linux系统上pip install -r requirements.txt可能失败报错ImportError: cannot import name fftshift from scipy.fftpack。这是因为新版本scipy将FFT模块移到了scipy.fft。解决方案是打开simulation.py将所有from scipy.fftpack import fft2, ifft2, fftshift, ifftshift替换为from scipy.fft import fft2, ifft2, fftshift, ifftshift。这是一个典型的API变更问题只需一行代码即可修复。5.4.gitignore和.inscode文件的隐藏价值别小看这两个不起眼的文件。.gitignore明确列出了*.mat,*.png,__pycache__/这告诉你作者不希望二进制数据文件和临时缓存进入版本库鼓励用户自己运行脚本生成结果。而.inscode文件虽然内容是空的但它是一个信号——它表明这个项目是为InsCode平台一个面向科研代码的协作平台优化的。这意味着当你在InsCode上Fork这个项目时它会自动配置好MATLAB Online的运行环境你甚至不需要本地安装MATLAB就能一键运行InTech_Ch19_Simulation_of_rough_surfaces_mod.m并实时查看结果。这是一种面向未来的、云原生的科研工作流值得你去探索。6. 从仿真到应用拓展你的光学数字实验室这套工具的生命力远不止于生成几张图。它是一个可扩展的“光学数字实验室”的核心引擎。我分享几个经过实战检验的拓展方向激光测量系统预研将你的激光三角测距仪的光学系统参数激光线宽、CCD像素尺寸、镜头焦距代入脚本模拟不同Rq/τ的工件表面。你会发现当Rq 0.1μm时散斑噪声会淹没测量信号此时你需要改用结构光而当τ 5μm时散斑颗粒过小CCD无法分辨信噪比急剧下降。这些结论比任何理论估算都来得直接。表面形貌反演算法测试平台编写一个简单的反演算法如基于散斑对比度C查表法或基于功率谱拟合法用脚本生成大量已知Rq/τ的“真值”散斑再让算法去预测。figure2.png就是一个典型的“真值”样本。通过统计预测误差你可以客观评估算法的精度和鲁棒性这比用真实样品做标定要快得多、成本低得多。教学演示的利器在课堂上用MATLAB Live Script打开主脚本实时修改Rq和τ让学生亲眼看到散斑如何从“雾”变成“沙”再变成“石子”。然后切换到ASM和菲涅尔近似让他们直观感受不同物理近似的适用边界。知识就是在这种即时反馈中被真正内化的。我个人在实际使用中发现最有启发性的时刻不是看到一张完美的散斑图而是当仿真结果与某个真实实验现象“对不上”时。比如我曾模拟一个Rq0.8μm的抛光不锈钢表面得到的散斑对比度比实测值低了20%。这促使我回头检查模型——原来我忽略了表面氧化层带来的额外相位扰动。于是我在U_ref的相位项里增加了一个与Z无关的、随机的微小相位噪声项结果立刻与实验吻合。这个过程就是仿真从“玩具”走向“工具”的蜕变。它不再是一个封闭的计算盒子而成为你思考物理世界的一个延伸器官。本文还有配套的精品资源点击获取简介一套开箱即用的MATLAB脚本工具专注模拟激光照射下具有高斯统计特性的随机粗糙表面所生成的反射散斑图像。脚本支持自定义表面均方根高度和相关长度灵活设置激光波长、入射角与偏振态并基于标量衍射理论或基尔霍夫近似计算反射光场复振幅最终输出强度分布图即散斑图样。配套多个示例图像figure1.png至figure6.png直观展示不同参数组合下的散斑形态变化包括对比度、颗粒尺寸和空间分布特征。用户可直接运行主脚本InTech_Ch19_Simulation_of_rough_surfaces_mod.m通过修改输入参数快速验证粗糙度参数对散斑特性的影响规律。同时提供Python参考脚本simulation.py及依赖清单requirements.txt便于跨平台复现与二次开发。适用于光学散射建模教学、激光测量系统预研、表面形貌反演算法测试等实际工程场景。本文还有配套的精品资源点击获取