numpy 2d图像点中的距离测量单元(python)

byqmnocz  于 2023-10-19  发布在  Python
关注(0)|答案(2)|浏览(98)

我使用Python + Numpy来计算垂直于点到二维图像中两点定义的直线的距离(每个点的坐标是该点在二维像素矩阵中的位置)。

p1, p2, p3 # as the points    
    
    # calculating the distance of p3 to the line constructed out of the p1 and p2
    # distance formula using the cross product approach
    d = numpy.linalg.norm(np.cross(p2-p1, p1-p3))/numpy.linalg.norm(p2-p1)

问题是:

以这种方式计算的距离的输出测量单位是什么?
距离d是否以“像素”计算?

如果答案是肯定的,如何将其转换为毫米和其他测量单位?

oalqel3c

oalqel3c1#

我在处理dicom图像时也遇到了同样的问题。如果你正在使用dicom,你可以找到一个名为PixelSpacing的dicom标签。这个标签被定义为两个数字,如(0.02,0.08);其中第一数字表示以mm为单位的行间距(两个相邻中心之间的垂直距离),第二数字表示以mm为单位的列间距(两个相邻中心之间的水平距离)。

1wnzp6jl

1wnzp6jl2#

如果这些点来自实际图像,则距离以“像素”为单位(实际上,距离是您指定给p1, p2, p3值的任意单位-数学不关心,对于Python来说它只是一个数字)-但不是屏幕上的距离。如果你有一个2x2的图像,并告诉它全屏显示,你显然会得到1个虚拟像素采取数千实际像素在您的显示器上。如果你拍摄4k图像并试图在640 x 480的显示器上显示,你显然将不得不合并几个虚拟像素来确定你需要显示什么颜色。同样,如果不根据您的确切设置设置进行任意转换,您就无法将其转换为其他测量单位。

相关问题