Как подсчитать количество подключенных компонентов в 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-объекта.