- 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 - 二維拉普拉斯濾波器
- Mahotas - 多數濾波器
- Mahotas - 均值濾波器
- Mahotas - 中值濾波器
- Mahotas - Otsu方法
- Mahotas - 高斯濾波
- Mahotas - Hit & Miss變換
- Mahotas - 標記最大值陣列
- Mahotas - 影像均值
- Mahotas - SURF密集點
- Mahotas - SURF積分影像
- Mahotas - Haar變換
- 突出顯示影像最大值
- 計算線性二值模式
- 獲取標籤邊界
- 反轉Haar變換
- Riddler-Calvard方法
- 標記區域的大小
- Mahotas - 模板匹配
- 加速魯棒特徵
- 去除邊界標記
- Mahotas - Daubechies小波
- Mahotas - Sobel邊緣檢測
Mahotas - 邊界畫素
邊界畫素是指位於影像邊界或邊緣上的畫素。邊界畫素至少有一個相鄰畫素屬於不同的區域或具有不同的值,表明感興趣區域與背景之間的過渡。
例如,在二值影像中,物體由白色畫素表示,背景由黑色畫素表示,邊界畫素將是那些與黑色畫素相鄰的白色畫素。
Mahotas中的邊界畫素
在Mahotas中,我們可以使用labeled.border()和labeled.borders()函式提取邊界畫素。這些函式透過檢查具有不同標籤的相鄰畫素來檢測邊界,同時還考慮結構元素指定的連通性。
使用mahotas.labeled.border()函式
mahotas.labeled.border()函式接受標記影像作為輸入,並返回一個相同大小的二值影像,顯示邊界畫素。此函式提取標記影像中兩個指定區域之間的邊界畫素。
在結果影像中,邊界畫素標記為True(或1),非邊界畫素標記為False(或0)。
語法
以下是Mahotas中border()函式的基本語法:
mahotas.labeled.border(labeled, i, j, Bc={3x3 cross},
out={np.zeros(labeled.shape, bool)}, always_return=True)
其中,
labeled - 輸入陣列。
i - 第一個區域的標籤。
j - 第二個區域的標籤。
Bc (可選) - 用於連通性的結構元素。
out (可選) - 輸出陣列(預設為與labeled形狀相同的新的陣列)。
always_return (可選) - 一個標誌,指示是否在沒有邊界畫素時返回輸出(預設為True)。
示例
在下面的示例中,我們使用mh.labeled.border()函式提取標記區域1的邊界畫素。
import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# Loading the image
image_rgb = mh.imread('sea.bmp')
image = image_rgb[:,:,0]
# Applying gaussian filtering
image = mh.gaussian_filter(image, 4)
image = (image > image.mean())
# Converting it to a labeled image
labeled, num_objects = mh.label(image)
# Getting border pixels
border_pixels = mh.labeled.border(labeled, 0, 1)
# Creating a figure and axes for subplots
fig, axes = mtplt.subplots(1, 2)
# Displaying the original RGB image
axes[0].imshow(image_rgb)
axes[0].set_title('RGB Image')
axes[0].set_axis_off()
# Displaying the border pixels
axes[1].imshow(border_pixels)
axes[1].set_title('Border Pixels')
axes[1].set_axis_off()
# Adjusting spacing between subplots
mtplt.tight_layout()
# Show the figure
mtplt.show()
輸出
以下是上述程式碼的輸出:
使用mahotas.labeled.borders()函式
mahotas.labeled.borders()函式提取標記影像中的所有邊界畫素。它類似於mahotas.labeled.border()函式,因為它檢查具有不同標籤的相鄰畫素以檢測邊界。
它也生成一個二值影像,其中邊界畫素標記為True(或1),非邊界畫素標記為False(或0)。
語法
以下是Mahotas中borders()函式的基本語法:
mahotas.labeled.borders(labeled, Bc={3x3 cross}, out={np.zeros(labeled.shape,
bool)})
其中,
labeled - 輸入陣列。
Bc (可選) - 用於連通性的結構元素。
out (可選) - 輸出陣列(預設為與labeled形狀相同的新的陣列)。
示例
在這裡,我們使用mh.labeled.borders()函式提取標記影像的所有邊界畫素。
import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# Loading the image
image_rgb = mh.imread('nature.jpeg')
image = image_rgb[:,:,0]
# Applying gaussian filtering
image = mh.gaussian_filter(image, 4)
image = (image > image.mean())
# Converting it to a labeled image
labeled, num_objects = mh.label(image)
# Get border pixels
border_pixels = mh.labeled.borders(labeled)
# Creating a figure and axes for subplots
fig, axes = mtplt.subplots(1, 2)
# Displaying the original RGB image
axes[0].imshow(image_rgb)
axes[0].set_title('RGB Image')
axes[0].set_axis_off()
# Displaying the border pixels
axes[1].imshow(border_pixels)
axes[1].set_title('Border Pixels')
axes[1].set_axis_off()
# Adjusting spacing between subplots
mtplt.tight_layout()
# Showing the figures
mtplt.show()
輸出
上述程式碼的輸出如下:
使用自定義結構元素
我們還可以使用自定義結構元素來更精確地檢測邊界畫素。結構元素是一個奇數維度的二值陣列,由1和0組成。
它定義了在識別邊界畫素時鄰域畫素的連線模式。我們可以使用numpy庫中的array()函式定義自定義結構元素。
例如,讓我們考慮二值陣列:[[0, 1, 0],[0, 1, 0],[0, 1, 0]]作為結構元素。此結構元素暗示垂直連線,這意味著對於每個畫素,僅將其正上方和正下方的畫素(在同一列中)視為其鄰居。
預設情況下,mahotas.labeled.border()和mahotas.labeled.borders()都使用3×3十字形結構元素。此結構元素在確定連線性時會考慮每個畫素的四個直接鄰居(頂部、底部、左側和右側)。
示例
以下示例顯示了使用自定義結構元素提取邊界畫素。
import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# Loading the image
image_rgb = mh.imread('sun.png')
image = image_rgb[:,:,0]
# Applying gaussian filtering
image = mh.gaussian_filter(image, 4)
image = (image > image.mean())
# Converting to a labeled image
labeled, num_objects = mh.label(image)
# Creating a custom structuring element
binary_closure = np.array([[0, 1, 0],
[0, 1, 0],
[0, 1, 0]])
# Getting border pixels
border_pixels = mh.labeled.borders(labeled, Bc=binary_closure)
# Create a figure and axes for subplots
fig, axes = mtplt.subplots(1, 2)
# Displaying the original RGB image
axes[0].imshow(image_rgb)
axes[0].set_title('RGB Image')
axes[0].set_axis_off()
# Displaying the border pixels
axes[1].imshow(border_pixels)
axes[1].set_title('Border Pixels')
axes[1].set_axis_off()
# Adjusting spacing between subplots
mtplt.tight_layout()
# Showing the figures
mtplt.show()
輸出
產生的輸出如下所示: