
- Mahotas 教程
- Mahotas - 首頁
- Mahotas - 簡介
- Mahotas - 計算機視覺
- Mahotas - 歷史
- Mahotas - 特性
- Mahotas - 安裝
- Mahotas 影像處理
- Mahotas - 影像處理
- Mahotas - 載入影像
- Mahotas - 載入灰度影像
- Mahotas - 顯示影像
- Mahotas - 顯示影像形狀
- Mahotas - 儲存影像
- Mahotas - 影像質心
- Mahotas - 影像卷積
- Mahotas - 建立 RGB 影像
- Mahotas - 影像尤拉數
- Mahotas - 影像中零的比例
- Mahotas - 獲取影像矩
- Mahotas - 影像區域性最大值
- Mahotas - 影像橢圓軸
- Mahotas - 影像拉伸 RGB
- Mahotas 顏色空間轉換
- Mahotas - 顏色空間轉換
- Mahotas - RGB 轉灰度
- Mahotas - RGB 轉 LAB
- Mahotas - RGB 轉棕褐色
- Mahotas - RGB 轉 XYZ
- Mahotas - XYZ 轉 LAB
- Mahotas - XYZ 轉 RGB
- Mahotas - 增加伽馬校正
- Mahotas - 拉伸伽馬校正
- Mahotas 標籤影像函式
- Mahotas - 標籤影像函式
- Mahotas - 影像標記
- Mahotas - 區域過濾
- Mahotas - 邊界畫素
- Mahotas - 形態學運算
- Mahotas - 形態學運算元
- Mahotas - 查詢影像均值
- Mahotas - 裁剪影像
- Mahotas - 影像偏心率
- Mahotas - 影像疊加
- Mahotas - 影像圓度
- Mahotas - 影像縮放
- Mahotas - 影像直方圖
- Mahotas - 影像膨脹
- Mahotas - 影像腐蝕
- Mahotas - 分水嶺演算法
- Mahotas - 影像開運算
- Mahotas - 影像閉運算
- Mahotas - 填充影像孔洞
- Mahotas - 條件膨脹影像
- Mahotas - 條件腐蝕影像
- Mahotas - 影像條件分水嶺
- Mahotas - 影像區域性最小值
- Mahotas - 影像區域最大值
- Mahotas - 影像區域最小值
- Mahotas - 高階概念
- Mahotas - 影像閾值化
- Mahotas - 設定閾值
- Mahotas - 軟閾值
- Mahotas - Bernsen 區域性閾值化
- Mahotas - 小波變換
- 生成影像小波中心
- Mahotas - 距離變換
- Mahotas - 多邊形工具
- Mahotas - 區域性二值模式
- 閾值鄰域統計
- Mahotas - Haralick 特徵
- 標記區域的權重
- Mahotas - Zernike 特徵
- Mahotas - Zernike 矩
- Mahotas - 排序濾波器
- Mahotas - 2D 拉普拉斯濾波器
- Mahotas - 多數濾波器
- Mahotas - 均值濾波器
- Mahotas - 中值濾波器
- Mahotas - Otsu 方法
- Mahotas - 高斯濾波
- Mahotas - 擊中或錯過變換
- Mahotas - 標記最大陣列
- Mahotas - 影像均值
- Mahotas - SURF 密集點
- Mahotas - SURF 積分
- Mahotas - Haar 變換
- 突出顯示影像最大值
- 計算線性二值模式
- 獲取標籤邊界
- 反轉 Haar 變換
- Riddler-Calvard 方法
- 標記區域的大小
- Mahotas - 模板匹配
- 加速魯棒特徵
- 去除邊界標記
- Mahotas - Daubechies 小波
- Mahotas - Sobel 邊緣檢測
Mahotas - 影像開運算
開運算是在影像處理中使用的兩步過程。首先,執行腐蝕操作,然後執行膨脹操作。
腐蝕透過檢查每個畫素及其相鄰畫素來縮小或去除不需要的細節。如果任何相鄰畫素為黑色,則中心畫素也變為黑色。
此步驟有助於消除細小的凸起和內部噪聲。凸起是從表面向外延伸的細長結構。
腐蝕後,執行膨脹以擴充套件或增厚影像。它檢視每個畫素及其鄰居,如果任何相鄰畫素為白色,則中心畫素變為白色。
開運算有效地去除了小的細節和噪聲,同時保留了影像的主要結構。
Mahotas 中的影像開運算
要在 Mahotas 中執行開運算,我們使用 mahotas.open() 函式。此方法允許順序應用腐蝕和膨脹操作。
腐蝕透過考慮每個畫素的鄰域並將其替換為最小值來減少噪聲並消除小的結構。
隨後,膨脹透過用其鄰域中的最大值替換每個畫素來擴充套件剩餘的結構,同時保留其關鍵特徵。
mahotas.open() 函式
Mahotas 中的 open() 函式有兩個主要引數 - 二值影像和結構元素(核心)。該函式首先對輸入二值影像應用腐蝕操作。然後,它對腐蝕後的影像應用膨脹操作。
在執行腐蝕和膨脹操作後,open() 函式返回生成的開運算後的影像。
語法
以下是 mahotas 中 open() 函式的基本語法 -
mahotas.open(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') opened_image = mh.open(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 opened image axes[1].imshow(opened_image, cmap='gray') axes[1].set_title('Opened Image') axes[1].axis('off') # Adjust the layout and display the plot plt.tight_layout() plt.show()
輸出
執行上述程式碼後,我們得到以下輸出 -

使用隨機二值影像
我們還可以透過建立隨機二值影像來對影像執行開運算。為此,我們首先使用 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 opening with a 3x3 cross structuring element result = mh.open(image, Bc, out=np.empty_like(image)) # Show the result imshow(result) show()
輸出
生成的輸出如下所示 -

使用灰度影像
我們還可以在 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 opening with a 3x3 cross structuring element result = mh.open(image, Bc, out=np.empty_like(image)) # Show the result imshow(result) show()
輸出
以下是上述程式碼的輸出 -
