📜  Mahotas – 使用高斯差分的二值图像边缘(1)

📅  最后修改于: 2023-12-03 14:44:07.241000             🧑  作者: Mango

Mahotas - 使用高斯差分的二值图像边缘

Mahotas是一个基于Python的图像处理库,它提供了大量用于图像分析和计算机视觉的工具。在Mahotas中,可以通过高斯差分(Gaussian difference)来提取图像边缘。

安装Mahotas

要安装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,并显示原始图像和提取出的边缘。