像素坐标转物理坐标(mm):校准后像素值是否发生变化?
图像校准疑问解答
- 你的代码操作仅改变了图像的像素值,并没有替换像素坐标为物理坐标。
- 详细说明:
- 原始图像里的每个像素值代表的是该位置的灰度或强度信息,你用
mm_per_pixel乘每个像素值,本质是把这些强度值做了缩放,相当于给强度值换了个以毫米为基准的单位,但这和坐标无关。 - 如果要把像素坐标换成物理坐标,你需要在后续处理位置信息时,把像素点的(x,y)转换成(xmm_per_pixel, ymm_per_pixel),而不是直接去修改像素的强度值。
- 原始图像里的每个像素值代表的是该位置的灰度或强度信息,你用
- 另外注意:你说棋盘格正方形边长是5mm,但代码里写的
square_size_mm = 0.5,这里明显写错了,应该改成5,不然转换因子会完全错误。
附上修正后的代码:
# Load the image to be calibrated data_cv2 = cv2.imread('x1.tif', cv2.IMREAD_ANYDEPTH).astype(np.float32) pixels_per_square = 175 square_size_mm = 5 # 修正为实际的棋盘格边长5mm # Determine the calibration factor mm_per_pixel = square_size_mm / pixels_per_square # Calibrate the image (仅缩放像素强度值) calibrated_img = data_cv2 * mm_per_pixel
内容的提问来源于stack exchange,提问作者vashista
相关产品推荐
相关产品推荐

