Рубрики
Без рубрики

Отладка файлов Vlfeat Mex в Visual Studio Community 2013 edition и Matlab release 2013a

Настоятельно рекомендуется пройти через это tutorial.mathworks.com) один раз. Если…

Автор оригинала: Simmi Mourya.

Настоятельно рекомендуется пройти этот учебник один раз. Если вы мало знаете о файлах Mex, пожалуйста, обратитесь к этому учебнику один раз. Однако в этом нет необходимости. Вы сможете следовать всему этому учебнику, даже не зная многого о файлах mex. Но это покажется менее волшебным, если вы обратитесь к этой ссылке. 🙂

  1. Скачать Vlfeat .
  2. Внутри загруженной папки перейдите к vl_compile.m в папке toolbox.
  3. В vl_compile.m найдите этот фрагмент:
cmd = {['-I' toolboxDir], ...
 ['-I' vlDir], ...
 '-o', ...
 '-outdir', mexwDir, ...
 filePath } ;

Замените флаг-o флагом-g: [нет оптимизации, но вместо этого отладка], т. е.

cmd = {['-I' toolboxDir], ...
 ['-I' vlDir], ...
 '-g', ...
 '-outdir', mexwDir, ...
 filePath } ;
  1. Скомпилируйте источник Vlfeat с помощью команды vl_compile. т. Е. В командном окне Matlab перейдите в папку, содержащую vl_compile.m, и запустите vl_compile.

  2. Для компиляции всех исходных файлов C MEX требуется некоторое время. Тем временем вы найдете совершенно новую папку с именем mex в папке toolbox. Эта папка mex содержит все двоичные файлы mex, необходимые для использования интерфейса Vlfeat Matlab. Поскольку я использую платформу Windows x64, мне следует изучить папку с именем mexw64.

Примечание: Возможно, вы не сможете запускать команды vlfeat Matlab даже после компиляции. Вы можете столкнуться с некоторыми ошибками. Я составил список тех ошибок и их решений, которые сработали в моем случае.

  1. Внутри mexw64 (выберите папку в соответствии с платформой, на которой вы работаете) вы найдете файлы pdb [База данных отладки программ] наряду с двоичными файлами mex. Это файлы, которые содержат отладочную информацию и, следовательно, используются Visual Studio позже при отладке. Примечание: Если вы не используете флаг-g, файлы pdb не формируются.

  2. Теперь вы все готовы к отладке.

Запустите Visual Studio (VS) [Не завершайте сеанс Matlab]. В VS перейдите в раздел инструменты, выберите Прикрепить к процессу и выберите MATLAB из списка.

  1. Откройте файл, который вы хотите отладить в VS. В моем случае это был vl_siftdescriptor.c. Поэтому я перешел в папку sift внутри папки toolbox и открыл дескриптор vl_sift.c

  2. Установите точки останова в нужных местах.

  3. В командном окне Matlab запустите дескриптор vl_sift с соответствующими аргументами. Вы перейдете к VS, когда первый отладчик достигнет первой точки останова.

Просто ради этого урока я вставляю команды exacts, которые я использовал для запуска дескриптора vl_sift в Matlab:

I1 = im2single(imread('lena.png'));
[F,D]=vl_sift(I1);
I_ = vl_imsmooth(I1, sqrt(F(3)^2 - 0.5^2)) ;
[Ix, Iy] = vl_grad(I_) ;
mod = sqrt(Ix.^2 + Iy.^2) ;
ang = atan2(Iy,Ix) ;
grd = shiftdim(cat(3,mod,ang),2) ;
grd = single(grd) ;
vl_siftdescriptor(grd, F);

Наслаждайтесь!

P. S: На всякий случай, если вы все еще не можете отлаживать в VS. В моем случае эта ссылка очень помогла!