分辨率测试靶-标定显微镜、相机等光学系统的分辨率

(25) 2024-04-24 12:01:01

分辨率测试靶

  • 1. USAF 1951分辨率测试靶
    • 1.1. 介绍
    • 1.2. 图上数字的含义
    • 1.3. 规律
    • 1.4. 计算
      • 1.4.1. 线对
      • 1.4.2. 计算实例
    • 1.5. 计算脚本

1. USAF 1951分辨率测试靶

1.1. 介绍

我们买的是这一款。是从麓邦买的,它实际上Thorlabs同款型号的高仿。

麓邦上面给的图片不对,没有第4组外侧的部分。

Thorlabs 给的图是正确的。

分辨率测试靶-标定显微镜、相机等光学系统的分辨率 (https://mushiming.com/)  第1张

由于,thorlabs 给的图,第6组开始就看不清了。所以,这里放出小细节的图。

分辨率测试靶-标定显微镜、相机等光学系统的分辨率 (https://mushiming.com/)  第2张

1.2. 图上数字的含义

如下图,比较大的数字(下图圈出来的)表示是组号。旁边比较小的数字是组内序号

分辨率测试靶-标定显微镜、相机等光学系统的分辨率 (https://mushiming.com/)  第3张

麓邦该产品页-技术说明,给出来的分辨率数据如下表
分辨率测试靶-标定显微镜、相机等光学系统的分辨率 (https://mushiming.com/)  第4张

1.3. 规律

  • 左上角都是 偶数组.2
  • 左下角都是 偶数组.6
  • 右下角都是 偶数组.1
  • 右上角都是 奇数组
  • 奇数组都在一起,从上到下排布

1.4. 计算

1.4.1. 线对

业界内表示分辨率,采用的是每毫米可以识别的线对数。

  • 比如分辨率8.9797 lp/mm。lp 就是 line pair。这个数据说明,1mm范围内,有8.9797个线对

啥是线对?

  • 如下图,上面的红线标出来的就是一个线对。线对就是一根黑线,一根白线。
  • 分辨率测试靶采用3条线一个集合,这样有效能减小伪分辨率发生的概率。相机拍照完,数相机数时,可以按如下图下面那条红线来数(对应2.5个线对)。
    分辨率测试靶-标定显微镜、相机等光学系统的分辨率 (https://mushiming.com/)  第5张

1.4.2. 计算实例

步骤

  • 第一步:调整成像系统,让分辨率板能最清晰地成像。不要过曝(图像中,如果背景时黑色的话,尽量不要有地方的灰度等于255)
  • 第二步:找到一个合适的线对组,让它大致占满视野(考虑到边缘可能畸变,要放在正中间,边缘适当留一点空余。如果畸变很小,可以忽略的话,占满应该最好)
  • 第三步:记住它是哪一个线对,如第3组第2个,保存图片时就命名为xxx_3.2
  • 第四步:用相机拍照,保存图片。可保存不同线对的图片,最后计算出来的结果,还可以互相比照,看看偏差是否很小,还可以取平均数。
  • 第五步:用一些工具测量一下线对组(3条白线是一组)的宽度。可以用的工具很多,如
    • 免费开源的:ImageJ。如下图,先画线,然后顶部菜单-Analyze-Measure
      分辨率测试靶-标定显微镜、相机等光学系统的分辨率 (https://mushiming.com/)  第6张
    • 随便找的测量工具,Camera Measure,还不错,可以试用。购买就是198.00元注册两台电脑
      分辨率测试靶-标定显微镜、相机等光学系统的分辨率 (https://mushiming.com/)  第7张
  • 第六步:开始计算

在明美显微镜,20x物镜下,得到的数据如下

图片名称 线对组宽度(pixels) 该线对分辨率(lp/mm)
明美x20_3.2 1829 8.9797
明美x20_3.3 1629 10.0794

首先,明美x20_3.2

  • 每线对的宽度(mm):1mm ÷ \div ÷ 8.8797 lp/mm
  • 线对组的宽度(mm): 1mm ÷ \div ÷ 8.8797 lp/mm * 2.5 lp
  • 像素尺寸比(um/pixel):(1 / 8.8797) * 2.5 / 1829 * 1000 = 0.154 um

同理,明美x20_3.3

  • 像素尺寸比(um/pixel): (1 / 10.0794) * 2.5 / 1629 * 1000 = 0.152 um

可以看出,两次计算结果相差不大。平均值为0.153 um

1.5. 计算脚本

用于计算像素物理尺寸的python脚本

""" calculate the pixel size (the physical distance that each pixel represents) the Resolution Test Targets: https://www.lbtek.com/product/417.html """


def get_pixel_size(pixel_num, resolution):
    """ calculate the pixel size (the physical distance that each pixel represents) :param pixel_num: the line pair set width on the image (pixel number) :param resolution: the resolution of the line pair set :return: the pixel size (the physical distance that each pixel represents) """
    line_pairs = 2.5  # the line pairs number of the line pair set
    result = (1 / resolution) * line_pairs / pixel_num * 1000
    return result


if __name__ == '__main__':
    pixel_size = get_pixel_size(pixel_num=1829, resolution=8.8797)
    print("Each pixel represent %.3f um" % pixel_size)
THE END

发表回复