分辨率测试靶-标定显微镜、相机等光学系统的分辨率
·
分辨率测试靶
1. USAF 1951分辨率测试靶
1.1. 介绍
我们买的是这一款。是从麓邦买的,它实际上Thorlabs同款型号的高仿。
麓邦上面给的图片不对,没有第4组外侧的部分。
Thorlabs 给的图是正确的。
由于,thorlabs 给的图,第6组开始就看不清了。所以,这里放出小细节的图。
1.2. 图上数字的含义
如下图,比较大的数字(下图圈出来的)表示是组号。旁边比较小的数字是组内序号
麓邦该产品页-技术说明,给出来的分辨率数据如下表
1.3. 规律
- 左上角都是
偶数组.2
- 左下角都是
偶数组.6
- 右下角都是
偶数组.1
- 右上角都是
奇数组
- 奇数组都在一起,从上到下排布
1.4. 计算
1.4.1. 线对
业界内表示分辨率,采用的是每毫米可以识别的线对数。
- 比如分辨率
8.9797 lp/mm
。lp 就是 line pair。这个数据说明,1mm范围内,有8.9797个线对
啥是线对?
- 如下图,上面的红线标出来的就是一个线对。线对就是一根黑线,一根白线。
- 分辨率测试靶采用3条线一个集合,这样有效能减小伪分辨率发生的概率。相机拍照完,数相机数时,可以按如下图下面那条红线来数(对应2.5个线对)。
1.4.2. 计算实例
步骤
- 第一步:调整成像系统,让分辨率板能最清晰地成像。不要过曝(图像中,如果背景时黑色的话,尽量不要有地方的灰度等于255)
- 第二步:找到一个合适的线对组,让它大致占满视野(考虑到边缘可能畸变,要放在正中间,边缘适当留一点空余。如果畸变很小,可以忽略的话,占满应该最好)
- 第三步:记住它是哪一个线对,如第3组第2个,保存图片时就命名为
xxx_3.2
。 - 第四步:用相机拍照,保存图片。可保存不同线对的图片,最后计算出来的结果,还可以互相比照,看看偏差是否很小,还可以取平均数。
- 第五步:用一些工具测量一下线对组(3条白线是一组)的宽度。可以用的工具很多,如
- 免费开源的:ImageJ。如下图,先画线,然后顶部菜单-Analyze-Measure
- 随便找的测量工具,Camera Measure,还不错,可以试用。购买就是198.00元注册两台电脑
- 免费开源的:ImageJ。如下图,先画线,然后顶部菜单-Analyze-Measure
- 第六步:开始计算
在明美显微镜,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)
更多推荐
所有评论(0)