背景
在数值计算领域有一个比较知名的去卷积迭代算法——Lucy–Richardson算法,它被后世集中用于图像去噪。例如,MATLAB的Image Processing Toolbox有一个deconvlucy
命令,声称就是用Lucy–Richardson算法对给定图片(像素矩阵)作给定点扩散函数的去噪。
但是,Lucy的原文[1]所针对的问题,比现在一般应用更广义。假定是一个连续取值随机变量。它理应按照分布密度函数。我们想把视为某种简单分布按权重谱的叠加结果:
(1)
而我们想得知给定形式的核所对应的权重谱。在这里,是核函数的参数。比如,我们关心高斯核函数的情况,那么可能是以为标准差的高斯函数
在图像去噪的上下文中,以deconvlucy
为例,核函数是一个固定参数的函数,且的取值范围(即的“宽度”)远窄于的范围(在图像语境中是图像的大小)。但在Lucy原文的语境中,、和都是支撑为整个实数的分布密度函数。可以说,图像去噪应用,只是Lucy原文算法的其中一个很特殊的例子。
数值计算的设计艺术
在我的研究中,恰好需要解决Lucy原文意义的问题,因此我是认真阅读了Lucy的原文多次的,有些其他方面的感受。
原文的文字极其清晰和流畅,逻辑十分严密,记号仔细(既不滥用又不混用)。我觉得这是有成就的作者的共性。读到这样的文字就能说明作者是事实上的大师(尽管世俗名誉上未必)。
在论文发表的1970年代,电子计算机在科学计算中的应用已经比较普及。原文没有提及所报道的验证实验是在什么计算机上进行的,只在致谢中说到了NASA的Goddard Institute for Space Studies (GISS)提供了机时。我相信,这应该是一种需要申请节点的大型计算机,机时资源应该是比较昂贵的。
在今天,像我这种数值计算的外行,可以在MATLAB开发环境中重复运行多次来学习一个没有从原理上吃透的算法的行为,因为很多计算在今天的普通笔记本电脑上运行都毫无压力。但是在当年,这种“作弊”的做法是不提倡的。给定一个算法,你理应努力地在草稿纸上分析它的好处和坏处。这种功夫我没有,但从这篇论文中还是领教了它的优雅。
从算法的原理,就能看出它的结果只对长波长噪音敏感,而对短波(高频)噪音迟钝,它在头几个迭代就能快速收敛,它在样本数太少时会有什么异常……等等,都通过分析,在不放到计算机中瞎试之前,就都清楚了。而我的做法,常常是边试边改算法。极度浪费计算资源来迁就我在分析上的懒惰。这在今天也许不是什么罪过,甚至作为一个数值计算的外行,这可以说是在聪明地节省时间,但我仍然对原文这种“数值计算的设计艺术”感到敬佩。
有那么一些论文,我是称之为“教学论文”的,就是它好到可以拿来作为典范,给研究生作为范文,去学习很多超出论文具体内容的东西,比如论文结构、学术英语写作、批判性逻辑、乃至科学精神。Lucy的这篇论文就可以称之为一篇“教学论文”。
该作者的全名是Leon Brian Lucy。关于他的详细信息,可见其一篇讣告[2]和纪念文章[3]。
References
- L.B. Lucy, "An iterative technique for the rectification of observed distributions", The Astronomical Journal, vol. 79, pp. 745, 1974. http://dx.doi.org/10.1086/111605
- D. Baade, J. Danziger, R. Hook, and J. Walsh, "Leon B. Lucy (1938–2018)", Bulletin of the AAS, vol. 54, 2022. http://dx.doi.org/10.3847/25c2cfeb.88cfeeba