二维图像点中的距离测量单位(python)

问题描述 投票:0回答:2

我使用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
是以‘像素’计算的吗?

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

python numpy distance pixel units-of-measurement
2个回答
1
投票

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


0
投票

如果这些点来自实际图像,则距离以“像素”为单位(实际上,距离是以您分配给

p1, p2, p3
值的任意单位表示的 - 数学并不关心,对于 Python 来说,它只是一个数字) - 但不是屏幕上的那些。如果您有一个 2x2 图像并让它全屏显示,您显然会得到其中 1 个虚拟像素在显示屏上占据数千个实际像素。 如果您拍摄 4k 图像并尝试在 640x480 显示器上显示,您显然必须组合一些虚拟像素来确定需要显示的颜色。 同样,如果不根据您的具体设置设置一些任意转换,您就无法将其转换为其他测量单位。

© www.soinside.com 2019 - 2024. All rights reserved.