首页 > 解决方案 > MATLAB 的“improfile”函数是否有 Python 等价物?

问题描述

我正在尝试生成高斯拟合来描绘激光束横截面图像的光束强度。我知道如何使用 MATLAB 的函数轻松做到这一点improfile,它让我可以用鼠标指定线段并绘制强度值与沿线段的距离的关系。是否有 Python 等价物可以让我完成相同的任务?

标签: pythonmatlabimage-processing

解决方案


是的,有:包中profile_line的功能skimage.measure。我在 MATLAB 中没有图像处理工具箱,因此我也无法使用 MATLABsimprofile函数显示该示例,但它的工作方式与skimages相同profile_line

例如:

import matplotlib.pyplot as plt
import numpy as np
from skimage.measure import profile_line
from skimage import io

# Load some image
I = io.imread('265173ab144040477cc4d41606b36cd6.jpg', as_gray=True)

# Extract intensity values along some profile line
p = profile_line(I, (45, 30), (160, 30))

# Extract values from image directly for comparison
i = I[45:161, 30]

plt.plot(i)
plt.ylabel('intensity')
plt.xlabel('line path')
plt.show()

在剖面强度图中,两个阵列都在彼此之上

在此处输入图像描述

证明:

>>> np.array_equal(p, i)
True

推荐阅读