2012-02-25 3 views
4

В любом случае, чтобы это ускорилось? coz прямо сейчас, это как 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); 
+0

Можете ли вы разместить некоторые exaples? – BlackBear

+0

пример фотографий? –

+0

Пример рисунка не может: он говорит, что мне нужна репутация выше 10, чтобы сделать это. У меня только 4 на данный момент –

ответ

2

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

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

Смотрите следующий

http://opencv.willowgarage.com/documentation/cpp/object_detection.html - функция matchTemplate. http://opencv.willowgarage.com/wiki/OpenCV_GPU - о функциях OpenCV, перенесенных на GPU.

+0

У сервера может возникнуть проблема с Gpu. Fe хостинг серверов и почти нет vps имеют доступ к gpu; (Печально. – TomTom

+1

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

+0

@MichaelKupchick Wow ......... this тяжелый материал ....Мне нужно получить больше идей по образам и всем Спасибо, что цените это. Я не знаю, работает ли это сейчас, но позвольте мне проверить это, и если он будет соответствовать, я проголосую за ваш ответ. Надеюсь, не занять слишком много времени. –