如何在 Aforge.net 中使用 5*5 结构元素 Dilation 进行编码?
How can I code using 5*5 structuring element Dilation in Aforge.net?
AForge.NET 框架提供了一组来自数学形态学的过滤器。所有过滤器都可以应用为使用默认结构元素,如使用自定义指定的结构元素。
在膨胀中,过滤器将周围像素的最大值分配给结果图像的每个像素。应处理的周围像素由结构元素指定:1 - 处理邻居,-1 - 跳过它。
该滤镜对二值图像处理特别有用,它允许增长单独的对象或合并对象。
对于处理具有 3x3 结构元素的图像,有不同的优化可用,例如 Dilatation3x3 和 BinaryDilatation3x3。
滤镜接受 8 和 16 bpp 灰度图像以及 24 和 48 bpp 彩色图像进行处理。
这是 3*3 结构元素的代码:
Dilatation filter = new Dilatation( );
filter.Apply( image );
但我需要使用 5*5 结构元素来实现此代码。如何将此代码修改为 5*5 结构元素?
您可以构造一个扩张过滤器,并按照规范 here 将自定义结构元素传递给它。您想要的结构元素是具有以下结构的二维 Int 数组:
new short[5,5]{
{ 1,1,1,1,1 },
{ 1,1,1,1,1 },
{ 1,1,1,1,1 },
{ 1,1,1,1,1 },
{ 1,1,1,1,1 },
}
我不知道 AForge.NET 框架,但是尺寸为 5x5 的 erosion/dilation 等于尺寸为 3x3 的两个 erosions/dilations。这是在支持六边形结构元素的库中所做的。
因此,在您的情况下,您只需应用两次操作即可。根据您的代码,它将是:
Dilatation filter = new Dilatation( );
filter.Apply( image );
filter.Apply( image );
AForge.NET 框架提供了一组来自数学形态学的过滤器。所有过滤器都可以应用为使用默认结构元素,如使用自定义指定的结构元素。
在膨胀中,过滤器将周围像素的最大值分配给结果图像的每个像素。应处理的周围像素由结构元素指定:1 - 处理邻居,-1 - 跳过它。
该滤镜对二值图像处理特别有用,它允许增长单独的对象或合并对象。
对于处理具有 3x3 结构元素的图像,有不同的优化可用,例如 Dilatation3x3 和 BinaryDilatation3x3。
滤镜接受 8 和 16 bpp 灰度图像以及 24 和 48 bpp 彩色图像进行处理。
这是 3*3 结构元素的代码:
Dilatation filter = new Dilatation( );
filter.Apply( image );
但我需要使用 5*5 结构元素来实现此代码。如何将此代码修改为 5*5 结构元素?
您可以构造一个扩张过滤器,并按照规范 here 将自定义结构元素传递给它。您想要的结构元素是具有以下结构的二维 Int 数组:
new short[5,5]{
{ 1,1,1,1,1 },
{ 1,1,1,1,1 },
{ 1,1,1,1,1 },
{ 1,1,1,1,1 },
{ 1,1,1,1,1 },
}
我不知道 AForge.NET 框架,但是尺寸为 5x5 的 erosion/dilation 等于尺寸为 3x3 的两个 erosions/dilations。这是在支持六边形结构元素的库中所做的。
因此,在您的情况下,您只需应用两次操作即可。根据您的代码,它将是:
Dilatation filter = new Dilatation( );
filter.Apply( image );
filter.Apply( image );