C# 如何在Forge.net中使用5*5结构元素膨胀进行编码?

C# 如何在Forge.net中使用5*5结构元素膨胀进行编码?,c#,image-processing,aforge,C#,Image Processing,Aforge,NET框架提供了一组来自数学形态学的过滤器。所有过滤器都可以作为使用默认结构元素应用,就像使用自定义指定的结构元素一样 在膨胀中,过滤器将周围像素的最大值指定给结果图像的每个像素。应该处理的周围像素由结构元素指定:1-处理相邻像素,1-跳过相邻像素 该过滤器对于二值图像处理特别有用,在二值图像处理中,它允许生长单独的对象或连接对象 对于使用3x3结构元素处理图像,有不同的优化可用,如Dilation3x3和BinaryDilation3x3 过滤器接受8和16 bpp灰度图像以及24和48 bp

NET框架提供了一组来自数学形态学的过滤器。所有过滤器都可以作为使用默认结构元素应用,就像使用自定义指定的结构元素一样

在膨胀中,过滤器将周围像素的最大值指定给结果图像的每个像素。应该处理的周围像素由结构元素指定:1-处理相邻像素,1-跳过相邻像素

该过滤器对于二值图像处理特别有用,在二值图像处理中,它允许生长单独的对象或连接对象

对于使用3x3结构元素处理图像,有不同的优化可用,如Dilation3x3和BinaryDilation3x3

过滤器接受8和16 bpp灰度图像以及24和48 bpp彩色图像进行处理

这是3*3结构元素的代码:

Dilatation filter = new Dilatation( );
filter.Apply( image );

但是我需要使用5*5结构元素来实现这段代码。如何将此代码修改为5*5结构元素?

您可以构造一个扩展过滤器,并按规范传递一个自定义结构元素。所需的结构元素是具有以下结构的二维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 },
}

您可以构造一个膨胀过滤器,并按照规范向其传递一个自定义结构元素。所需的结构元素是具有以下结构的二维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 },
}

我不知道RGE.NET框架,但尺寸为5x5的侵蚀/扩张等于尺寸为3x3的两个侵蚀/扩张。这就是在支持六边形结构元素的库中所做的

因此,在您的情况下,只需应用两次操作。根据您的代码,它将是:

Dilatation filter = new Dilatation( );
filter.Apply( image );
filter.Apply( image );

我不知道RGE.NET框架,但尺寸为5x5的侵蚀/扩张等于尺寸为3x3的两个侵蚀/扩张。这就是在支持六边形结构元素的库中所做的

因此,在您的情况下,只需应用两次操作。根据您的代码,它将是:

Dilatation filter = new Dilatation( );
filter.Apply( image );
filter.Apply( image );