2016-04-27 6 views
1

Структура AForge.NET предоставляет набор фильтров из математической морфологии. Все фильтры могут применяться в качестве используемого элемента структурирования по умолчанию, так как используют специальный настраиваемый элемент структурирования.Как я могу кодировать, используя 5 * 5 структурирующий элемент Dilation в Aforge.net?

В режиме Dilation фильтр присваивает максимальное значение окружающих пикселей каждому пикселю изображения результата. Окружающие пиксели, которые должны обрабатываться, определяются элементом структурирования: 1 - обрабатывать соседа, -1 - пропустить его.

Фильтр особенно полезен для обработки двоичных изображений, где он позволяет вырастить отдельные объекты или объединить объекты.

Для обработки изображения с помощью структурирующего элемента 3x3 доступны различные варианты оптимизации, такие как Dilatation3x3 и BinaryDilatation3x3.

Фильтр принимает изображения с оттенками серого и 8 и 16 точек на дюйм и цветные изображения 24 и 48 точек на дюйм для обработки.

Это код 3 * 3 структурного элемента:

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

Но мне нужно реализовать этот код, используя 5 * 5 структурного элемента. Как я могу изменить этот код на 5 * 5 структурирующий элемент?

ответ

2

Я не знаю AForge.NET рамки, но эрозия/растяжение размеров 5х5 равно двум эрозий/растяжения размеров 3x3. Это то, что сделано в библиотеках, поддерживаемых гексагональными элементами структурирования.

Так что в вашем случае вы просто применяете дважды операцию. В соответствии с вашим кодом это будет:

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

Вы можете создать фильтр Dilatation и передать его настраиваемому элементу структурирования как spec'd here. Структурирование элемент, который вы хотите, является 2 мерной 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 }, 
} 
+0

спасибо! это помогло мне сделать 2X2 – CyC0der