Mahotas 图像处理简介

嘿编码员!我确信您已经实现了多个图像处理库。但你知道蟒蛇的口袋里总是藏着一些诡计吗?!它还有另一个计算机视觉和图像处理库,称为 Mahotas.

该库是在 中实现的 C++ and operates on NumPy arrays,这使得它更快。目前,它包含 around 100 计算机视觉和图像处理功能。

另请阅读:在 Python 中显示图像的 5 种方法

在本教程中,我们将从使用 Mahotas 库进行一些简单的图像操作开始。在继续之前,我们将首先使用命令安装库 pip 。可以使用如下所示的命令完成相同的操作。

pip install mahotas

安装库后,我们将继续将库导入到程序中。我们将导入 pylab 与图像显示相关的功能。

1
2
import mahotas
from pylab import imshow, show

您可以使用任何图像进行图像处理。在本教程中,我们将使用来自互联网的随机图像。我们将使用 mahotas.imread 加载图像和 imshow 显示图像的函数。

1
2
3
img = mahotas.imread('sample.jpg')
imshow(img)
show()
玛霍塔斯输出 1

它 mean of an image 有多种用途,包括图像处理中的降噪。Mahotas 能够计算图像的平均值,但一次仅限于一个通道,因为我们的图像是彩色的,我们会将其减少为一次一个通道。

1
2
3
4
5
6
7
8
9
img0 = img[:,:,0]
img1 = img[:,:,1]
img2 = img[:,:,2]
mean0 = img0.mean() 
mean1 = img1.mean()
mean2 = img2.mean() 
print("Mean Value for the channel 1 is ", mean0) 
print("Mean Value for the channel 2 is ", mean1)
print("Mean Value for the channel 3 is ", mean2)

我使用的图像共有 3 个通道。所以我分别计算 3 个通道的 3 个平均值。

Mean Value for the channel 1 is  195.63318904447684
Mean Value for the channel 2 is  172.86992779952305
Mean Value for the channel 3 is  172.8701535539508

使用该库,我们还可以使用下面的代码片段裁剪图像。您可以将起始像素和结束像素指定为所需的任何像素值。

我将首先尝试使灯泡和手处于焦点位置,其位于 x 轴上的 1000 和 3000 像素值之间。

1
2
3
img2 = img[:, 1000:3000]  
imshow(img2) 
show() 
玛霍塔斯输出 2

我们不要尝试通过沿 y 轴裁剪来进一步裁剪图像,以仅聚焦在灯泡上。看下面的代码片段。我们像以前一样从完整图像图中的 x 轴和 y 轴选择了值。

1
2
3
img2 = img[1000:25001300:2300]  
imshow(img2) 
show() 
玛霍塔斯输出 3

roundness 是图像中的对象与形成完美圆形的相似/接近程度的度量。让我们看一下同一图像的两个不同值,一个用于完整图像,另一个用于带有灯泡聚焦的图像。价值观的差异非常明显。

1
2
3
4
5
img1 = img[::,1]
r1 = mahotas.features.roundness(img1) 
r2 = mahotas.features.roundness(img2) 
print("Roundness of the full image : ", r1)
print("Roundness of the bulb focused image : ", r2)

代码的输出如下:

Roundness of the full image :  0.0
Roundness of the bulb focused image :  0.0009273648133338048

图像的 是 图像中local maxima 被识别为 的区域 。local peaks可以使用以下代码行显示它们。

1
2
3
4
img2 = img.max(1)
lmaxim = mahotas.locmax(img) 
imshow(lmaxim)
show()
玛霍塔斯输出 4

我们可以借助 Overlay image 下面的代码片段中的类似内容获得图像的灰度版本。

1
2
3
4
img = img[:, :, ]  
ol = mahotas.overlay(img) 
imshow(ol) 
show()
玛霍塔斯输出 5

结论

在本教程中,我们了解并学习了开发人员如何借助一些基本功能来使用 mahotas 进行图像处理。库中还有更多可用的函数。请继续关注更多!

另请阅读:Python 中的图像处理 – 边缘检测、调整大小、腐蚀和膨胀