Mahotas - 影像圓度



影像圓度指的是衡量影像中物體或區域與完美圓形相似程度的指標。它是一個用於量化圓形度或偏離圓形的程度的度量。

圓度值是透過將物體的形狀與圓形進行比較來計算的。

完美的圓形物體其圓度值接近1,而形狀更細長或不規則的物體其圓度值接近0。

Mahotas中的影像圓度

在Mahotas中,我們可以使用mahotas.features.roundness()函式計算物體的圓度。此函式以二值影像作為輸入。

二值影像是一種影像,其中每個畫素都被分類為前景(感興趣的物體)或背景。通常,前景畫素由白色(畫素值=1)表示,背景畫素由黑色(畫素值=0)表示。

輸入的二值影像應為布林格式或用布林值的NumPy陣列表示。

mahotas.features.roundness()函式

'mahotas.features.roundness()'函式接受二值影像作為輸入,並返回0到1之間的浮點值。該值越接近1.0,形狀越接近完美的圓形。

語法

以下是mahotas中roundness()函式的基本語法:

mahotas.features.roundness(image)

其中,“image”是布林影像輸入。

示例

在下面的示例中,我們使用roundness()函式查詢影像的圓度:

import mahotas as mh
import numpy as np
image = mh.imread('sun.png', as_grey = True)
roundness = mh.features.roundness(image)
print("Roundness of the image= ", roundness)

輸出

獲得的輸出如下:

Roundness of the image= 4.98542867728303e-05

二值影像中的斑點圓度

斑點圓度指的是衡量斑點與完美圓形相似程度的指標。接近1的圓度值表示更圓的斑點,而遠小於1的值表示更細長或不規則的形狀。

要使用Mahotas計算二值影像中的斑點圓度,我們需要一個前景(斑點)和背景之間清晰分離的影像。然後,標記二值影像中的斑點,為每個斑點分配一個唯一的識別符號(索引)。

這有助於區分各個斑點。然後,計算每個標記斑點的圓度。

示例

在這裡,我們嘗試計算二值影像中的斑點圓度:

import mahotas as mh
import numpy as np
image = mh.imread(tree.tiff', as_grey=True)
# Labelling the blobs in the image
labeled, _ = mh.label(image)
# Computing the roundness of each blob
roundness = mh.features.roundness(labeled)
print("Blob Roundness:", roundness)

輸出

上述程式碼的輸出如下:

Blob Roundness: 2.0659091361803767

使用Zernike矩

Zernike矩是影像中物體形狀的數學表示。

它透過分析物體內部強度或顏色變化的分佈來捕捉影像的圓度和其他形狀屬性。

要使用Zernike矩確定影像的圓度,我們首先指定一個半徑值。此半徑確定將計算矩的圓形區域的大小。

選擇較小的半徑非常適合分析較小的物體,而較大的半徑更適合較大的物體。

一旦我們計算出Zernike矩,第一個矩在評估影像圓度時就顯得尤為重要。它作為影像中物體整體圓度的代表性度量。

透過從Zernike矩列表中提取第一個元素,我們得到一個特定值,該值可以準確地量化物體的圓度。

示例

在這裡,我們嘗試使用Zernike矩查詢影像圓度:

import mahotas as mh
image = mh.imread('nature.jpeg', as_grey = True)
# Setting the radius for calculating Zernike moments
radius = 10
# Calculating the Zernike moments
moments = mh.features.zernike_moments(image, radius=radius)
# The first Zernike moment represents roundness
roundness = moments[0]
print(roundness)

輸出

執行上述程式碼後,我們將得到如下所示的輸出:

0.3183098861837907
廣告