Опубликован: 02.09.2013 | Доступ: свободный | Студентов: 431 / 54 | Длительность: 19:27:00

Самостоятельная работа 6: Сравнение производительности некоторых алгоритмов в библиотеках OpenCV и IPP

3. Сравнение производительности операций над изображениями, реализованных на базе OpenCV и Intel IPP

3.1. Тестовые данные

Все рассматриваемые в данной лабораторной работе алгоритмы имеют квадратичную сложность. Чтобы подготовленные нами реализации показывали времена, на которых имеет смысл проводить сравнение, необходимо использовать или подготовить изображение достаточно большого размера. Используем файл Desert.jpg из состава операционной системы Windows 7, расположенный в папке C:\Users\Public\Pictures\Sample Pictures. Этот файл имеет размер 1024x768 пикселей. Создадим из него изображение размера 8192x6144 пиксела, скопировав исходную картинку нужное число раз в любом графическом редакторе.

На указанном изображении авторами были получены следующие времена.

OpenCV (время, с) IPP (время, с)
Медианный фильтр 0.361 0.319
Эрозия 0.234 0.115
Дилатация 0.224 0.118
Гистограмма 0.351 0.130

3.2. Проведение вычислительных экспериментов

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

Таким образом, необходимо изменить следующие фрагменты.

Дополнить описание запуска.

char helper[] =  
  "01_OpenCVvsIPP.exe <img_name> <mode> <num_of_exp>\n\ 
  \t<img_name> - image filename\n\ 
  \t<mode>:\n\ 
  \t\t1 - median filtering\n\ 
  \t\t2 - erode\n\ 
  \t\t3 - dilate\n\ 
  \t\t4 - calc histogram\n\ 
  \t<num_of_exp> - number of experiments\n"; 
 

Исправить проверку на число параметров командной строки

  if (argc < 4) 
  { 
    printf("%s", helper); 
    return 1; 
  } 
  

Считать значение параметра.

  int numOfExp; 
... 
  numOfExp = atoi(argv[3]); 
  

Изменить вызовы функций

  ocv_time = ipp_time = 0; 
  switch (mode) 
  { 
  case 1: 
    for (i = 0; i < numOfExp; i++) 
    {       // отфильтровать с помощью OpenCV 
      ocv_time += median_opencv(srcImgOCV, dstImgOCV); 
      // отфильтровать с помощью IPP 
      ipp_time += median_ipp(srcImgIPP, dstImgIPP); 
    } 
... 
  

Выполните указанные изменения и проведите эксперименты с разными значениями параметра numOfExp.

4. Дополнительные задания

  1. Проведите серийные эксперименты над последовательностью изображений.
  2. Проведите сравнение других алгоритмов, присутствующих как в OpenCV, так и в IPP и решающих одни и те же задачи.
  3. Исследуйте возможность использования оптимизированных реализаций функций библиотеки IPP для повышения производительности алгоритмов библиотеки OpenCV. Изучите вопрос о совместном использовании библиотек.
Андрей Терёхин
Андрей Терёхин

Нахожу в тесте вопросы, которые в принципе не освещаются в лекции. Нужно гуглить на других ресурсах, чтобы решить тест, или же он всё же должен испытывать знания, полученные в ходе лекции?

Демянчик Иван
Демянчик Иван

В главе 14 мы видим понятие фильтра, но не могу разобраться, чем он является в теории и практике.

" Искомый объект можно описать с помощью фильтра F= \lbrace f_{x',y'},x' \in \lbrace0, ...,w_f \rbrace , y' \in \lbrace 0,...,h_f \rbrace \rbrace "