Mahotas 简明教程

Mahotas - Fraction of Zeros in an Image

图像中零的分数是指图像中像素值为零的像素与图像中像素总数的比例。在图像中,每个像素通常表示网格中的一个点,像素值可以在 0 到最大值之间,具体取决于图像的色彩深度或强度范围。

零价值较高的分数表示图像的很大一部分包含空白或背景区域,而零分数较低表示非零像素值的密度分布较高,这意味着内容更详细或更复杂。

Fraction of Zeros in an Image in Mahotas

要获得 Mahotas 中图像中零的分数,我们需要遍历整个图像并通过图像中像素的总数除以零像素的计数。

像素的总数等于图像中的行数乘以列数。

Example

在以下示例中,我们通过将图像数组与零进行比较,对 True 值求和并除以像素的总数来计算图像中零值像素分数 -

import mahotas as mh
import numpy as np
image = mh.imread('sun.png')
# Calculating the fraction of zeros
fraction_of_zeros = np.sum(image == 0) / np.prod(image.shape)
print(f"Fraction of zeros: {fraction_of_zeros}")

执行上面的代码后,我们得到以下输出: -

Fraction of zeros: 0.009496713127718466

Using the count_nonzero() Function

我们还可以使用 mahotas 中的 count_nonzero() 函数计算图像中零的分数。 count_nonzero() 函数用于计算数组中非零元素的数量。它接受数组作为输入,并返回非零元素的总数。

Syntax

以下是在 mahotas 中 count_nonzero() 函数的基本语法 −

count_nonzero(arr, axis=None)

其中,

  1. arr − 它是要计数非零元素的输入数组。

  2. axis (optional) − 它是要计数非零元素的轴或轴,如果未指定轴,则考虑输入数组的所有元素。

Example

在此,我们使用 np.count_nonzero() 函数计算图像“nature.jpeg”中像素的数量 −

import mahotas as mh
import numpy as np
image = mh.imread('nature.jpeg')
# Counting the number of zero pixels
zero_count = np.count_nonzero(image == 0)
# Calculating the fraction of zeros
total_pixels = image.size
fraction_of_zeros = zero_count / total_pixels
print("The fraction of zeros in the image is:", {fraction_of_zeros})

上述代码的输出如下:

The fraction of zeros in the image is: {0.010734258862206976}

Using Numpy

NumPy 库提供有效的用于处理数组和矩阵的数据结构和函数。它广泛用于诸如数学运算、数据处理和科学计算等任务,这是因为其高性能和广泛的功能。

我们还可以使用 numpy 操作计算零的分数 −

  1. 首先,将 NumPy 数组与零进行比较,以将图像转换为二进制形式。

  2. 此比较生成一个布尔数组,如果相应的像素值大于零,其中每个元素为 True,否则为 False。

  3. 然后将布尔数组转换为“np.uint8”数据类型,从而生成一个二进制图像,其中白色像素由 1 表示,黑色像素由 0 表示。

为了计算零的分数,计算二进制图像中零值元素的数量。此计数除以二进制图像中元素的总数以获得分数。

Example

此处,我们首先将图像转换为二进制表示形式。然后,我们计算二进制图像的零分数 −

import mahotas as mh
import numpy as np
image = mh.imread('tree.tiff')
# Convert the image to binary
image_binary = (image > 0).astype(np.uint8)
# Calculate the fraction of zeros
fraction_of_zeros = np.sum(image_binary == 0) / np.prod(image_binary.shape)
print("Fraction of zeros:", fraction_of_zeros)

上述代码的输出如下:

Fraction of zeros: 0.014683837192681532