Как подсчитать количество подключенных компонентов в BLOB-объекте с помощью Aforge.Net

В моем приложении распознавания номерных знаков (британские номерные знаки) я выполнил обнаружение прямоугольника и использую несколько критериев, таких как соотношение ширины / длины номерного знака, а также минимальную ширину и длину номерного знака. Мне удалось значительно сократить площади без номерных знаков. Моим последним критерием было бы получить количество подключенных компонентов для каждой области-кандидата, чтобы я мог проверить истинную область номерного знака на изображении транспортного средства, которую я прочитал в исследовательской работе.

Я использую C# и библиотеку Aforge.Net. Но как я могу использовать ConnectedComponentsLabeling для получения количества подключенных Компонентов в номерной табличке?

2 ответа

Решение

Я делаю это:

FiltersSequence preOcr = new FiltersSequence(
    Grayscale.CommonAlgorithms.BT709, 
    new BradleyLocalThresholding());

Bitmap grayscale = preOcr.Apply(original);
var labels = new ConnectedComponentsLabeling();
labels.Apply(new Invert().Apply(grayscale));

//Console.WriteLine(labels.ObjectCount);    // Here you go
foreach (var candidate in labels.BlobCounter.GetObjectsInformation())
{
    using (Bitmap symbol = new Bitmap(candidate.Rectangle.Width, 
                                      candidate.Rectangle.Height))
    using (Graphics g2 = Graphics.FromImage(symbol))
    {
        g2.DrawImage(grayscale, 0, 0, candidate.Rectangle, GraphicsUnit.Pixel);
        symbol.Save(String.Format(@"temp\{0}-{1}.jpg",i,++n), ImageFormat.Jpeg);
        // do stuff
    }
}

Когда вы нашли каплю, соответствующую номерному знаку, используйте этот блоб Image в качестве входных данных для другого экземпляра счетчика блобов. Результат скажет вам количество компонентов в этом изображении BLOB-объекта.

Другие вопросы по тегам