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

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

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


person Mr.Noob    schedule 22.07.2012    source источник


Ответы (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
    }
}
person Rubens Farias    schedule 27.10.2012

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

person Umair    schedule 30.01.2015