我使用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
是否以“像素”计算?
如果答案是肯定的,如何将其转换为毫米和其他测量单位?
2条答案
按热度按时间oalqel3c1#
我在处理dicom图像时也遇到了同样的问题。如果你正在使用dicom,你可以找到一个名为PixelSpacing的dicom标签。这个标签被定义为两个数字,如(0.02,0.08);其中第一数字表示以mm为单位的行间距(两个相邻中心之间的垂直距离),第二数字表示以mm为单位的列间距(两个相邻中心之间的水平距离)。
1wnzp6jl2#
如果这些点来自实际图像,则距离以“像素”为单位(实际上,距离是您指定给
p1, p2, p3
值的任意单位-数学不关心,对于Python来说它只是一个数字)-但不是屏幕上的距离。如果你有一个2x2的图像,并告诉它全屏显示,你显然会得到1个虚拟像素采取数千实际像素在您的显示器上。如果你拍摄4k图像并试图在640 x 480的显示器上显示,你显然将不得不合并几个虚拟像素来确定你需要显示什么颜色。同样,如果不根据您的确切设置设置进行任意转换,您就无法将其转换为其他测量单位。