Найти меньшее изображение в другом большом и быстро - PullRequest
4 голосов
/ 25 февраля 2012

В любом случае, чтобы эта штука пошла быстрее?Потому что сейчас это как 6 секунд на sourceImage размером 1024x768 и шаблоном 50x50 вокруг.Это использует AForge, если кто-то знает другие быстрые и довольно простые способы, пожалуйста, отправьте.Задача, которую я пытаюсь сделать, - найти уменьшенное изображение на скриншоте.И желательно быстро, мой лимит составляет 1 секунду.Изображение, которое я ищу, представляет собой простое изображение красного прямоугольника, и снимок экрана является более сложным.

System.Drawing.Bitmap sourceImage = (Bitmap)Bitmap.FromFile(@"C:\SavedBMPs\1.jpg");
System.Drawing.Bitmap template = (Bitmap)Bitmap.FromFile(@"C:\SavedBMPs\2.jpg");
// create template matching algorithm's instance
// (set similarity threshold to 92.5%)

ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0.921f);
// find all matchings with specified above similarity

TemplateMatch[] matchings = tm.ProcessImage(sourceImage, template);
// highlight found matchings

BitmapData data = sourceImage.LockBits(
    new Rectangle(0, 0, sourceImage.Width, sourceImage.Height),
    ImageLockMode.ReadWrite, sourceImage.PixelFormat);
foreach (TemplateMatch m in matchings)
{

        Drawing.Rectangle(data, m.Rectangle, Color.White);

    MessageBox.Show(m.Rectangle.Location.ToString());
    // do something else with matching
}
sourceImage.UnlockBits(data);

1 Ответ

2 голосов
/ 27 февраля 2012

http://opencv.willowgarage.com/wiki/FastMatchTemplate - здесь вы можете найти интересную идею для ускорения сопоставления с шаблоном, используя два шага, сначала попробуйте сопоставить изображения с пониженной частотой выборки и, если найдены, сопоставить исходные с меньшим регионом поиска.

Также есть opencv реализация соответствия шаблонов в функции matchTemplate. Эта функция перенесена на графический процессор, который может значительно ускориться.

См. Следующее

http://opencv.willowgarage.com/documentation/cpp/object_detection.html - функция matchTemplate. http://opencv.willowgarage.com/wiki/OpenCV_GPU - о функциональности OpenCV, портированной на графический процессор.

...