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

© . All rights reserved.