2. 上海理工大学 光电信息与计算机工程学院,上海 200093
2. School of Optical-Electrical Information and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China
随着信息科学技术和人工智能领域的迅速进步,眼视光学行业正在向智能化和数字化转型。根据世界卫生组织2020年发布的世界视觉报告[1],2015年,19岁以下的近视患者数量达到3.12亿;到2020年,各个年龄段的近视患者总数增至26亿。尽管灯箱视力表和投影视力表作为临床上广泛采用的工具,灯箱视力表尤其常用,但这些传统视敏度检测方法的限制逐渐显现。与此相对,智能视敏度检测技术代表了一种新兴趋势,通过支持无需人工辅助的自我测试,显著提高了测试的自主性。这种技术不仅展现出巨大潜力,还促进了检测过程的高效性和准确性,开辟了眼视光学领域的新可能。李太东等[2]定量研究了灯箱视力表和电脑视力表分别用于临床中所得视敏度检测结果的差异,证明两者差距并不大,且电子视力表有效避免了印刷视力表长时间后色彩褪化的问题。
目前,两种计算机辅助视敏度检测程序已被广泛认可:弗莱堡视敏度测试(the Freiburg visual acuity test, FrACT) [3],由德国弗莱堡大学眼科的Michael Bach教授研发;斯坦福视敏度测试(the stanford acuity test, StACT) [4],由美国斯坦福大学的Chris Piech教授研发。与传统的灯箱视力表相比,这些计算机辅助测试通过自动调整视标来适配被测试者的视力,减少了检测的重复性。这两项测试(与传统的灯箱视力表相比)不仅能够自动调整测试参数以适应被测试者的视力水平,而且减少了环境光线和距离的干扰,更适合评估变化视力和用于长距离视力测试。为进一步优化算法,本文提出将漂移算法与视敏度检测相结合,更精确地处理视力检测中数据不一致和环境变化等问题。
Cheng[5]对漂移算法进行了优化,通过引入核函数,使得样本点与目标点之间的距离产生不同的均值偏移向量贡献。此外,加入权重系数区分了各样本点的影响力,扩展了Mean Shift算法的适用性。Comaniciu等[6-7]将此算法有效应用于特征空间分析,在图像平滑和分割领域获得了显著成效。他们验证了Mean Shift算法在特定条件下能收敛至概率密度函数的稳定点,从而有效探测密度函数中的模态。Collins等[8]还将非刚体的跟踪问题近似为一个Mean Shift最优化问题,使得跟踪可以实时的进行。尽管Mean Shift算法在光学工程领域[9-11]和图像处理领域[12-14]应用广泛,但在视光学领域的探索仍较少。
在计算机辅助视敏度检测程序方面,当FrACT和StACT出现误差较大的情况时,它们的实际测量结果可能会失真。针对这一问题,研究结合了概率分布更新和均值漂移算法,开发了一种高精度的视敏度检测方法。该方法能够根据概率动态调整视标尺寸,减少猜测误差。研究采用的均值漂移算法利用非参数窗口技术,通过迭代更新样本点的位置,使其向局部概率密度函数的最大值(即峰值)移动,从而实现数据点的聚类或特征空间的模式识别。通过迭代过程精确地定位到概率密度函数的峰值,确保算法精确定位到受测者最可能的视敏度水平。
1 理论基础 1.1 概率分布更新算法在视敏度评估过程中,测试者真实视敏度值为X,其概率分布函数为
| $ P\left( {\left. X \right|A\left( {V,i,x} \right)} \right) = \frac{{P\left( {XA\left( {V,i,x} \right)} \right)}}{{P\left( {A\left( {V,i,x} \right)} \right)}} = 2P\left( {XA\left( {V,i,x} \right)} \right) $ | (1) |
式中:定义事件
这种条件设定影响了学习过程中的步长大小[15],但重要的是,步长受到一个可调整的超参数(Rat)的影响,该参数主要用于调整收敛速度,不会干扰理论框架和算法的有效执行。本文集中讨论
根据条件概率公式
| $ P\left( {XA\left( {V,i,1} \right)} \right) = P\left( {\left. {A\left( {V,i,1} \right)} \right|X} \right)P\left( X \right) $ | (2) |
式中:
| $ P\left( {\left. {A\left( {V,i,1} \right)} \right|X} \right) = \left\{ \begin{gathered} 1 - p,X {{<}}V \\ p,X {{≥}} V \\ \end{gathered} \right. $ | (3) |
在式(3)中,随着实验次数的增加,概率
| $ P\left( {\left. {A\left( {V,i,1} \right)} \right|X} \right) = \left\{ \begin{split}& \frac{1}{2} - \varepsilon ,X {{<}}V \\& \frac{1}{2} + \varepsilon ,X {{≥}} V \end{split} \right. $ | (4) |
式中,
式(4)表明,在视敏度值
将式(2)代入式(1),
| $ P\left( {\left. X \right|A\left( {V,i,1} \right)} \right) = P\left( X \right) * f\left( x \right) $ | (5) |
| $ f\left( X \right) = \left\{ \begin{gathered} 1 - 2\varepsilon ,X {{<}}V \\ 1 + 2\varepsilon ,X {{≥}} V \\ \end{gathered} \right. = \left\{ \begin{gathered} 1 - {\mathrm{Step}},X {{<}}V \\ 1 + {\mathrm{Step}},X {{≥}} V \\ \end{gathered} \right. $ | (6) |
根据上述公式可以观察到,对于错误回答事件
| $ P\left( {\left. X \right|A\left( {V,i,0} \right)} \right) = P\left( X \right) * g\left( X \right) $ | (7) |
| $ f\left( X \right) = \left\{ \begin{gathered} 1 + 2\varepsilon ,X {{<}}V \\ 1 - 2\varepsilon ,X {{≥}} V \\ \end{gathered} \right. = \left\{ \begin{gathered} 1 + {\mathrm{Step}},X {{<}}V \\ 1 - {\mathrm{Step}},X {{≥}} V \\ \end{gathered} \right. $ | (8) |
式(5)~(8)描述了一个迭代过程,与重复迭代的情况相匹配。每次迭代涉及应用一个系数,
| $ {P_{{\mathrm{new}}}} = P\left( {\left. X \right|A\left( {V,i,{1 \mathord{\left/ {\vphantom {1 0}} \right. } 0}} \right)} \right) = \frac{{P\left( {\left. X \right|A\left( {V,i,{1 \mathord{\left/ {\vphantom {1 0}} \right. } 0}} \right)} \right)}}{{\displaystyle\sum\limits_{x \in X} {P\left( {X\left| {A\left( {V,i,{1 \mathord{\left/ {\vphantom {1 0}} \right. } 0}} \right)} \right.} \right)} }} $ | (9) |
该归一化过程满足两个条件:1)每个概率均小于1;2)概率分布的总和等于1。
概率分布更新算法的核心目标是确定两个关键参数:
均值漂移算法是一种基于密度估计的无参数聚类方法[16],又称核密度估计算法[5]。其概念最早由Fukunage和Hostetler于1975年提出[17]。该算法旨在识别数据中的聚类中心或密度梯度较大的区域,并将数据点迁移到密度梯度较大的区域。其基本思想是通过迭代计算当前均值的漂移来推动均值中心点朝向密度梯度[18]更高的方向,直至漂移量小于预设的阈值目标。在均值漂移算法的初始运行阶段,无需受到初始点固定的限制,数据集中的任何一点均可作为初始点。这种特性使得该算法适用于各种维度和分布的采样数据集,迭代效率高。均值漂移算法的核心优势在于能够快速而有效地对数据进行聚类,即使在高维空间和复杂分布的情况下也能表现出良好的性能。其迭代过程能够在保证收敛性的同时,对数据的局部特征进行有效地捕捉,从而实现了对数据的自适应聚类。
均值漂移是指聚类中心根据偏移向量的平均值进行调整,其偏移均值为
| $ M\left( x \right) = \frac{1}{k}\sum\limits_{{x_i} \in {S_h}} {\left( {x - {x_i}} \right)} $ | (10) |
式中:
在特定时刻,聚类中心的计算式为
| $ {x^{t + 1}} = {M^t} + {x^t} $ | (11) |
式中:
图1为均值漂移算法在python语言环境下运行流程,可以看出,Mean Shift算法指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的结束条件。
|
图 1 均值漂移算法运行流程 Figure 1 Operation flow of the mean shift algorithm |
均值漂移算法的应用假设测试者的视敏度值(表示为
在当前的测试框架中,定义一个连续空间,其中
根据均值漂移算法有以下公式成立
| $ E\left( X \right) = \sum\limits_{x \in X} {P\left( {x\left| {A\left( {v,i,{1 \mathord{\left/ {\vphantom {1 0}} \right. } 0}} \right)} \right.} \right)x} $ | (12) |
| $ {V_{{\mathrm{new}}}} = {V_{{\mathrm{old}}}} + \left( {E\left( X \right) - {V_{{\mathrm{old}}}}} \right) * \lambda $ | (13) |
式中,
考虑到测试环境构成了一个系数的离散空间,实际视敏度值在3.9到5.1之间变化,这些预设的值之间的间隔相对较大。因此,在此情境下,参数
| $ {V_{{\mathrm{new}}}} = E\left( X \right) $ | (14) |
在执行过程中,系统通过更新概率分布并利用均值漂移算法进行迭代,以此来优化和细化测试结果。具体来说,算法首先根据初始数据设定一个初始概率分布,随后在每一次迭代中,根据受试者的反馈调整视敏度值的概率分布。这一过程涉及计算当前概率分布的数学期望(即“均值”),然后将当前推荐的视敏度标准值(
|
图 2 均值漂移算法流程图 Figure 2 Mean shift algorithm flowchart |
在进行电脑端视力测试时,必须考虑到不同分辨率和屏幕尺寸的设备对视标实际显示的影响。为确保视标显示的一致性,采用了基于动态计算的方法来适应各种显示设备。通过操作系统提供的API接口,软件自动获取用户屏幕的分辨率与物理尺寸信息。接着,利用这些数据,计算屏幕的像素密度(pixels per inch, PPI),该过程使用以下公式
| $ {V_{{\mathrm{new}}}} = E\left( X \right)PPI = \sqrt {\frac{{w_{_{{\text{pix}}}}^2 + h{{_{_{{\mathrm{pix}}}}^2}^{}}}}{{w_{_{{\text{inc}}}}^2 + h_{_{{\mathrm{inc}}}}^2}}} $ | (15) |
式中:wpix与hpix分别是屏幕的水平和垂直像素数量;winc与hinc分别是屏幕的宽度和高度的物理尺寸。
确定了PPI后,可以根据所需的视觉角度来计算图形应显示的像素尺寸。视觉角度通常是根据视力测试的标准来设定的,表达式为
| $ \begin{split} 图像像素尺寸=& 2\times 观看距离\times \\&\mathrm{tan}\left(\frac{视觉角度}{\text{2}}\right)\times PPI \end{split}$ | (16) |
这里的观看距离是用户距离屏幕的距离,视觉角度是图形在用户视野中应占据的角度。根据上面的计算,软件可以动态调整输出的图形尺寸,使其在不同设备上的实际大小相同,确保视力测试的准确性。
在视力检查中,虽然大部分情况下受试者能够准确判断视标方向,但在接近视力极限的视标尺寸时,判断往往带有随机性。这种随机性主要是因为,在视力极限水平,受试者对视标的辨识能力接近其生理极限,因此外界微小的变化(如光线、视距和视标的清晰度等)或者受试者的主观判断都可能影响测试结果。这种随机性不仅反映了视觉系统在接近其分辨极限时的敏感性,还体现了视觉感知的波动性。同时,受试者的心理状态、注意力的集中程度以及疲劳等主观因素也会对其判断造成影响。因此,在视力极限附近的测试结果通常不如较大视标下的结果稳定,往往呈现出波动甚至反复变化的趋势。为了减小这些随机因素的干扰,通常在视力检查中会采取多次重复测试,并取平均值来提高测试的可靠性。
2 实验对比分析 2.1 模拟数据实验在测试阶段,为了更直观地展现Mean Shift算法的测量过程,基于Qt平台开发了一个视敏度检测程序,使个人电脑能够快速进行独立的视敏度测试,图3 为视敏度检测程序界面图。图4 为该检测过程在两米条件下检测样图。该程序运用均值漂移算法选择下一个测试字母的大小并判定最终的视敏度结果,旨在通过人机交互设计一套视觉敏感度测量系统,允许用户利用电脑独立完成视敏度检测。该系统建立在Qt平台上,仅需个人电脑和蓝牙键盘即可进行快捷、随时的视敏度测试,具有较低的成本。
|
图 3 视敏度检测程序 Figure 3 Visual acuity testing program |
|
图 4 模拟测试过程 Figure 4 Simulation testing process |
实验是通过实际受试者的视敏度测试进行的。实验记录了每次测试中的视标大小、参与者的答题表现,以及最终的视敏度测试结果。使用E视力表作为测试工具,在2~5 m的距离下进行视敏度评估。参与者需阅读视标,基于其响应,记录答题的正确性。受试者依次站在不同距离的位置上,阅读大小发生变化的视标,并根据视标的方向做出判断,实验者实时记录每次测试中的视标大小、受试者的答题正确性和最终的视敏度结果。每位受试者的测试都在恒定的光线条件下进行,确保外界因素对实验干扰最小。为了进一步评估算法在处理不确定性时的表现,实验设计在4个不同的视觉精度水平上引入了猜测性事件,即当视标接近受试者的视力极限时,受试者可能无法准确识别视标方向,进而可能进行猜测。这些事件旨在模拟实际应用中的不确定情况,并观察受试者的反应。通过对每位受试者在不同测试距离和不同视力精度下的多次测试,实验对受试者的反应数据进行了详细记录,从而为后续算法的适应性和鲁棒性评估提供了基础数据。
图5~图8展示了在两米距离下进行模拟训练的算法模型,该模型模拟了4.4、4.5、4.6及4.8的视敏度水平,并考虑了猜测行为的影响。在4.4视敏度水平的模拟中,第1、7、13、20步分别出现不同的猜测行为。对于4.5视敏度水平,模拟了在第2、6、10、16步的猜测事件。在4.6视敏度水平,第3、7、9、12步发生了不同的猜测行为。而在4.8视敏度水平,第3、8、12、13步出现猜测事件。
|
图 5 4.4视敏度水平模拟评估 Figure 5 Simulation assessment of 4.4 visual acuity level |
|
图 6 4.5视敏度水平模拟评估 Figure 6 Simulation assessment of 4.5 visual acuity level |
|
图 7 4.6视敏度水平模拟评估 Figure 7 Simulation assessment of 4.5 visual acuity level |
|
图 8 4.8视敏度水平模拟评估 Figure 8 Simulation assessment of 4.8 visual acuity level |
对表1 中模拟视敏度测试的步长与结果记录分析表明,测试过程中若存在误触、误判行为,会引入随机猜对或猜错的干扰。这些意外并未对最终结果的生成或结果的准确性产生实质性影响。在猜测事件次数为4次的情况下,达到最终视敏度结果的步长介于6~16之间,所有测试均在20次全面评估中提前完成,并且测试结果与预期的模拟视敏度高度吻合。表格中“最终视力结果”是通过多轮视标检测以及基于均值漂移算法迭代优化后,选取概率最高的视敏度值作为最终的测试结果。该过程通过不断调整视标尺寸和概率分布,最终逼近受试者的真实视敏度水平,从而得出视敏度评估的结果。这一发现初步验证了基于均值漂移算法的视敏度检测模型在视敏度检测方面的准确性和可行性。实验表明,即使在受到干扰的环境中,基于均值漂移的算法仍可以高效准确地评估视敏度水平。
|
|
表 1 模拟视敏度测试的步长与结果记录 Table 1 Step lengths and results for simulated visual acuity testing |
为了深入评估均值漂移算法的性能,本研究采用了弗莱堡视敏度测试(FrACT)和斯坦福视敏度测试(StACT)作为基准,执行了一系列对比分析。为了评估3种算法的有效性和鲁棒性,本研究设计了3个测试场景:无错误、3次错误和5次错误。通过逐渐增加错误次数,检验算法的容错能力和稳健性。在FrACT和StACT视敏度测试中出现的小数值虽然存在,但对实验结果的影响可忽略不计。因此,为保证数据的一致性,本文对这些数值进行了舍入估算。
根据图9与图10的数据分析显示,在无错误及3次错误的实验条件下,3种算法所得测试结果与标准视敏度测定值之间的差异极小。均值漂移算法在与标准视觉性能指标对比中表现出更高的吻合度。
|
图 9 3种算法在无错误情况对比 Figure 9 Comparison of three algorithms under error-free conditions |
|
图 10 3种算法在出现3次错误情况对比 Figure 10 Comparison of three algorithms in the event with three errors |
根据实验数据,StACT算法在各版本中展示的偏差范围主要在−0.2至+0.1之间,而FrACT算法则普遍表现出−0.2至0的偏差,特别在错误环境下这一趋势更加明显。虽然StACT和FrACT算法在某些条件下存在轻微的偏差,但Mean Shift算法几乎在所有情况下都紧密匹配标准值,唯一例外是在出现5次错误版本的5.0评分上观察到的轻微正偏差(见图11)。这一点凸显了Mean Shift算法在各种测试环境下的卓越稳定性和精准度均值漂移算法之所以能够在不利条件下维持优异的鲁棒性,关键在于其内置机制对输入数据具有高效的容错处理,通过动态调整关键计算参数,有效降低误差输入的影响。
|
图 11 3种算法在出现5次错误情况对比 Figure 11 Comparison of three algorithms in the event with three errors |
根据表2 误差测量结果数据看出,在不同测试条件下,Mean Shift、FrACT和StACT算法的平均误差分别展现为
|
|
表 2 误差测量结果 Table 2 Result of error measurement |
本文针对视敏度检测的高准确性和强抗干扰性要求,结合均值漂移算法和概率分布更新的核心理念,开发了一种创新的视敏度检测模型,并阐述了其原理。该模型通过实时概率分析和统计方法,精确评估受测者视敏度水平,有效减少了随机猜测对评估结果的影响。在算法设计上,采用非参数窗口技术的均值漂移算法通过迭代寻优过程,精确锚定概率密度函数的峰值。实验结果证明,该算法将视敏度检测的平均误差减少到
| [1] | World Health Organization. World report on vision[R]. Geneva: WHO, 2020: 25, 30. |
| [2] | 李太东, 刘辉, 刘培兴. 灯箱视力表与电脑视力表临床应用对比研究[J]. 国际眼科杂志, 2008, 8(7): 1475–1476. |
| [3] | BACH M. The freiburg visual acuity test-automatic measurement of visual acuity[J]. Optometry and Vision Science, 1996, 73(1): 49–53. DOI:10.1097/00006324-199601000-00008 |
| [4] | PIECH C, MALIK A, SCOTT L M, et al. The Stanford acuity test: a precise vision test using Bayesian techniques and a discovery in human visual response[C]// Proceedings of the 34th AAAI Conference on Artificial Intelligence. New York: AAAI Press, 2020; 471 − 479. |
| [5] | CHENG Y Z. Mean shift, mode seeking, and clustering[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1995, 17(8): 790–799. DOI:10.1109/34.400568 |
| [6] | COMANICIU D, MEER P. Mean shift: a robust approach toward feature space analysis[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2002, 24(5): 603–619. DOI:10.1109/34.1000236 |
| [7] | COMANICIU D, RAMESH V, MEER P. Real-time tracking of non-rigid objects using mean shift[C]// Proceeding of IEEE Conference on Computer Vision and Pattern Recognition. Hilton Head: IEEE, 2000: 142 − 149. |
| [8] | COLLINS R T. Mean-shift blob tracking through scale space[C]//Proceeding of 2003 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Madison: IEEE, 2003: II-234. |
| [9] | 彭露. 光纤陀螺温漂高精度矫正方法研究[D]. 成都: 电子科技大学, 2023. |
| [10] | 冷悦, 钟胜. 光纤陀螺热致漂移分析及算法补偿技术研究[J]. 光学学报, 2024, 44(2): 0206003. |
| [11] | MALDONADO S, SALTOS R, VAIRETTI C, et al. Mitigating the effect of dataset shift in clustering[J]. Pattern Recognition, 2023, 134: 109058. DOI:10.1016/j.patcog.2022.109058 |
| [12] | WANG L G, LIU D, KONG W J, et al. Segmentation of high-resolution remote sensing images using the Gabor texture feature-based mean shift method[J]. Journal of Sensors, 2023, 2023(1): 9979431. DOI:10.1155/2023/9979431 |
| [13] | WU C M, ZHAO J T. Robust joint learning of superpixel generation and superpixel-based image segmentation using fuzzy C-multiple-means clustering[J]. Signal, Image and Video Processing, 2024, 18(3): 2345–2354. DOI:10.1007/s11760-023-02911-6 |
| [14] | ZHOU W H, YE Z Y, ZHENG Z B. A new npCEV chart for monitoring process mean shifts based on an attribute inspection[J]. Communications in Statistics-Theory and Methods, 2024, 53(2): 666–686. DOI:10.1080/03610926.2022.2089356 |
| [15] | REN D. Accelerated row-stochastic optimization over directed networks based on momentum methods[J]. Advances in Applied Mathematics, 2023, 12(3): 919–931. DOI:10.12677/AAM.2023.123094 |
| [16] | 温柳英, 庞柯. 基于覆盖树的自适应均值漂移聚类算法[J]. 计算机工程与设计, 2024, 45(2): 452–458. |
| [17] | FUKUNAGA K, HOSTETLER L. The estimation of the gradient of density function, with applications in a pattern recognition[J]. IEEE Transactions on Information Theory, 1975, 21(1): 32–40. DOI:10.1109/TIT.1975.1055330 |
| [18] | ZHANG B J, WANG J, GONG X L, et al. First-order sparse tsk nonstationary fuzzy neural network based on the mean shift algorithm and the group lasso regularization[J]. Mathematics, 2023, 12(1): 120. DOI:10.3390/math12010120 |
2026, Vol. 48
Issue (1): 53-63


