Mahotas影像閉運算



閉運算與開運算相反。首先進行膨脹操作,然後進行腐蝕操作。膨脹檢查每個畫素及其相鄰畫素。

如果任何相鄰畫素為白色,則中心畫素也變為白色。此步驟有助於擴充套件或加厚影像,並可以填充小的間隙或孔洞。

膨脹之後,腐蝕檢查每個畫素及其相鄰畫素。如果任何相鄰畫素為黑色,則中心畫素也變為黑色。此步驟有助於收縮或去除不需要的細節,例如細小的突出部分和內部噪聲。

閉運算有效地關閉二值影像中的小孔或間隙,並平滑或消除小的前景區域。

Mahotas中的影像閉運算

要在Mahotas中執行閉運算,我們使用`mahotas.close()`函式。此方法允許順序應用膨脹和腐蝕操作。

膨脹擴充套件剩餘結構,同時透過用其鄰域中的最大值替換每個畫素來保留其關鍵特徵。

隨後,腐蝕透過考慮每個畫素的鄰域並將其替換為最小值來減少噪聲並消除小的結構。

`mahotas.close()`函式

Mahotas中的`close()`函式有兩個主要引數:二值影像和結構元素(核心)。該函式首先將膨脹操作應用於輸入二值影像。然後,它將腐蝕操作應用於膨脹後的影像。

`close()`函式在執行膨脹和腐蝕操作後返回生成的閉合影像。

語法

以下是Mahotas中`close()`函式的基本語法:

mahotas.close(f, Bc={3x3 cross}, out={np.empty_like(f)})

其中,

  • f - 它是表示為NumPy陣列的輸入二值影像。

  • Bc - 它是用於膨脹和腐蝕操作的結構元素。預設為3x3十字形結構元素。

  • out - 它是輸出陣列。結果將儲存在一個與輸入影像f具有相同形狀和資料型別的新陣列中。

示例

在下面的示例中,我們對影像執行閉運算:

import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
image = mh.imread('sun.png')
closed_image = mh.close(image)
# Create a figure with subplots
fig, axes = plt.subplots(1, 2, figsize=(7,5 ))
# Display the original image
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].axis('off')
# Display the closed image
axes[1].imshow(closed_image, cmap='gray')
axes[1].set_title('Closed Image')
axes[1].axis('off')
# Adjust the layout and display the plot
plt.tight_layout()
plt.show()

輸出

執行上述程式碼後,我們得到以下輸出:

Closing Process Image

使用隨機二值影像

我們還可以透過建立隨機二值影像來對影像執行閉運算。為此,我們首先使用NumPy建立一個隨機二值影像,其中畫素為0(背景)或1(前景)。

一旦我們有了二值影像,就可以使用結構元素進行形態學閉運算。它將定義膨脹和腐蝕操作的鄰域的形狀和大小。

此外,我們建立一個與輸入影像形狀相同的空陣列來儲存結果。最後,我們得到最終的閉合影像。

示例

在這裡,我們嘗試透過建立隨機二值影像來對影像執行閉運算:

import mahotas as mh
import numpy as np
from pylab import imshow, show
# Create a random binary image
image = np.random.randint(0, 2, size=(100, 50), dtype=np.bool_)
Bc=np.ones((3,3))
# Perform morphological closing with a 3x3 cross structuring element
result = mh.close(image, Bc, out=np.empty_like(image))
# Show the result
imshow(result)
show()

輸出

生成的輸出如下所示:

Using Random Binary Image

使用灰度影像

我們也可以在mahotas中對灰度影像執行閉運算。為此,我們在讀取影像時只需傳遞`as_grey=True`引數,確保影像以灰度影像載入。接下來,我們將對灰度影像執行形態學閉運算。

示例

現在,我們在mahotas中對灰度影像執行閉運算:

import mahotas as mh
import numpy as np
from pylab import imshow, show
# Create a grayscale image
image = mh.imread('nature.jpeg', as_grey = True).astype(np.uint8)
Bc=np.ones((20,15))
# Perform morphological closing with a 3x3 cross structuring element
result = mh.close(image, Bc, out=np.empty_like(image))
# Show the result
imshow(result)
show()

輸出

以下是上述程式碼的輸出:

Grayscale Image Mahotas
廣告