Mahotas - 图像中零值的比例



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

高比例的零值表明图像的很大一部分包含空区域或背景区域,而低比例的零值则表明非零像素值的分布更密集,这意味着更详细或更复杂的内容。

Mahotas 中图像中零值的比例

为了在 Mahotas 中获得图像中零值的比例,我们需要遍历整个图像并将零像素的数量除以图像中的像素总数。

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

Mahotas 没有直接计算零值比例的函数。但是,您可以使用 numpy 和 mahotas 库来计算它。

示例

在下面的示例中,我们通过将图像数组与零进行比较来计算图像中零值像素的比例,对 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

使用 count_nonzero() 函数

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

语法

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

count_nonzero(arr, axis=None)

其中,

  • **arr -** 它是需要计算非零元素的输入数组。

  • **axis (可选) -** 它是计算非零元素的轴或轴。如果未指定 axis,则会考虑输入数组的所有元素。

示例

在这里,我们使用 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}

使用 Numpy

NumPy 库提供了用于处理数组和矩阵的高效数据结构和函数。由于其高性能和广泛的功能,它被广泛用于数学运算、数据处理和科学计算等任务。

我们还可以使用 numpy 操作计算零值的比例 -

  • 首先,将 NumPy 数组与零进行比较以将图像转换为二进制形式。
  • 此比较生成一个布尔数组,其中每个元素如果对应的像素值大于零则为 True,否则为 False。
  • 然后将布尔数组转换为“np.uint8”数据类型,从而生成一个二进制图像,其中白色像素由 1 表示,黑色像素由 0 表示。

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

示例

在这里,我们首先将图像转换为二进制表示。然后,我们计算二进制图像中零值的比例 -

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
广告