我正在编程自动聚焦在带可编程轴控制器的显微镜上。 为了测试,我实现了一个模拟,它根据曝光,轴位置等返回一个图像。模拟得到一个好的图像,并扭曲它 - 例如使得更明亮,更黑暗。
良好聚焦的底漆指示器是锐边(适用于我的图像类型)。基本上我总结了neighboirung像素之间的强度差异。总和越高,焦点越好。
我的问题是,如何模拟未聚焦的图像?有没有人实现过它? 一系列过滤器会很棒。
我尝试过cvSmooth,但它没有给出真实的结果。
PS:我目前的解决方法是改变ROI大小,与焦点位置的距离成反比。它适用于我的算法,但不适合演示 - 因为图像在模拟过程中不会改变。
答案 0 :(得分:4)
(我不确定堆栈溢出是否是您问题的正确站点,因为它是特定于域特定的)
在点扩散函数(PSF)的条件下查看显微镜。 PSF是描述显微镜中点状光源图像的功能。如果从3D点扩散函数中获取单个平面,则您具有此轴向距离的散焦行为。使用点扩散函数图像折叠图像,您将获得散焦图像。此操作通常称为“折叠”,“卷积”或“内核平滑”。
当然,您需要显微镜的点扩散功能,并且需要考虑很多细节 - 最重要的是,涉及的光学类型,数值孔径等。请询问相关的光学文献。 Sibaritas Deconvolution Microscopy似乎是个不错的开始。
请注意,一般来说,3D离焦涉及在阶段中集成贝塞尔函数。如果轴向散焦大约是显微镜横向分辨率的2倍,则可以用高斯掩模近似行为。这在普通显微镜上类似于一或两微米。对于较大的轴向散焦,您需要计算积分。我怀疑这是在OpenCV的范围内,因此您需要预先计算散焦函数。
我的论文项目rapidSTORM有石油目标的实施,但代码(pixelatedBessel.cpp)不在opencv中。
特别是对于高光圈显微镜,计算变得非常复杂,但是 - 在我的实验室中,我们通常更喜欢在显微镜上放一个点状光源(例如量子点),然后让Z阶段做工作