📅  最后修改于: 2023-12-03 14:44:07.241000             🧑  作者: Mango
Mahotas是一个基于Python的图像处理库,它提供了大量用于图像分析和计算机视觉的工具。在Mahotas中,可以通过高斯差分(Gaussian difference)来提取图像边缘。
要安装Mahotas,请在命令行中运行以下命令:
pip install mahotas
要提取图像的边缘,可以使用Mahotas中的gaussian_filter
函数来计算高斯平滑的图像。然后,通过将平滑图像与原始图像之差进行二值化,可以提取出边缘。
下面是一个使用高斯差分提取图像边缘的例子:
import mahotas as mh
import numpy as np
from matplotlib import pyplot as plt
# 读取图片
image = mh.imread('image.jpg')
# 计算高斯平滑图像
sigma = 10
smoothed = mh.gaussian_filter(image, sigma)
# 计算高斯差分图像
dog = np.abs(image.astype(np.int32) - smoothed.astype(np.int32))
dog = (dog - dog.min()) / (dog.max() - dog.min())
dog = (dog * 255).astype(np.uint8)
# 二值化图像
threshold = 128
binary = dog > threshold
# 显示结果
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
ax[0].imshow(image, cmap=plt.cm.gray)
ax[0].set_title('Original')
ax[1].imshow(binary, cmap=plt.cm.gray)
ax[1].set_title('Edges')
plt.show()
在上面的例子中,我们首先使用imread
函数读取一张图片。然后,我们使用gaussian_filter
函数计算出图像的高斯平滑图像。接着,我们计算出高斯差分图像,将它归一化到0到1之间,并把它转换为8位无符号整型的数组。最后,我们将高斯差分图像二值化,将阈值设置为128,并显示原始图像和提取出的边缘。