我使用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
是以‘像素’计算的吗?
如果答案是肯定的, 如何将其转换为毫米和其他测量单位?
我在处理 dicom 图像时遇到了同样的问题。如果您正在使用 dicom,您可以找到一个名为 PixelSpacing 的 dicom 标签。该标签定义为两个数字,如 (0.02, 0.08);其中第一个数字表示行间距,以毫米为单位(两个相邻中心之间的垂直距离),第二个数字表示列间距,以毫米为单位(两个相邻中心之间的水平距离。)
如果这些点来自实际图像,则距离以“像素”为单位(实际上,距离是以您分配给
p1, p2, p3
值的任意单位表示的 - 数学并不关心,对于 Python 来说,它只是一个数字) - 但不是屏幕上的那些。如果您有一个 2x2 图像并让它全屏显示,您显然会得到其中 1 个虚拟像素在显示屏上占据数千个实际像素。
如果您拍摄 4k 图像并尝试在 640x480 显示器上显示,您显然必须组合一些虚拟像素来确定需要显示的颜色。
同样,如果不根据您的具体设置设置一些任意转换,您就无法将其转换为其他测量单位。