Mahotas - 图像中的零分数
图像中的零分数是指零值像素占图像中像素总数的比例。在图像中,每个像素通常代表网格中的一个点,像素值的范围可以从 0 到最大值,具体取决于图像的颜色深度或强度范围。
零的比例高表明图像的很大一部分包含空白或背景区域,而零的比例低则表示非零像素值分布更密集,暗示内容更详细或更复杂。
Mahotas 中图像中的零比例
要在 Mahotas 中获得图像中的零比例,我们需要遍历整个图像并将零像素的数量除以图像中的总像素数。
像素总数等于图像中的行数乘以列数。
Mahotas 没有用于计算零比例的直接函数。但是,您可以使用 numpy 和 mahotas 库来计算它。
示例
在下面的例子中,我们通过将图像数组与零进行比较、对 True 值求和并除以像素总数来计算图像中零值像素的分数−
import mahotas as mh import numpy as np image = mh.imread('sun.png') # 计算零的分数 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') # 计算零像素的数量 zero_count = np.count_nonzero(image == 0) # 计算零的分数 total_pixels = image.size fraction_of_zeros = zero_count / total_pixels print("图像中零的分数是:", {fraction_of_zeros})
输出
上述代码的输出如下 −
图像中零的分数为:{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') # 将图像转换为二值 image_binary = (image > 0).astype(np.uint8) # 计算零分数 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