- 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()
输出
产生的输出如下所示: