EmguCV Первый основной компонент

Я работаю над обнаружением, отслеживанием и распознаванием рук, и мне нужно вычислить первый основной компонент. Я использую С# и EmguCV. Мой опыт работы с PCA очень ограничен, и я искал документацию, учебные пособия и код по этому вопросу и не могу найти подходящего...

Единственное, что мне нужно сделать, это получить главную ориентацию руки (я так понимаю, это первая главная компонента).

Может ли кто-нибудь помочь мне понять, как вычислить его из двоичного изображения?

Заранее спасибо.


person MCorreia    schedule 10.05.2013    source источник
comment
прочитайте этот codeproject.com/Articles/257502/   -  person Rachel Gallen    schedule 10.05.2013
comment
и это (более актуально) codeproject.com/Tips/394909/   -  person Rachel Gallen    schedule 10.05.2013
comment
Спасибо за ответ. Я уже делаю сегментацию рук и анализ контуров, чтобы обнаружить руку и пальцы. Я также использую моменты Ху для инвариантных к вращению характеристик бинаризованного изображения. Но мне нужно получить основную ориентацию объекта (руки), мне сказали, что я могу получить ее с помощью анализа PCA ... Сама ориентация - моя проблема.   -  person MCorreia    schedule 10.05.2013
comment
Вы читали cs.washington.edu/education/courses/cse576 /book/ch3.pdf это довольно подробно, но не более научно.   -  person Rachel Gallen    schedule 10.05.2013
comment
www-prima.imag.fr/Prima/jlc/papers/PUI97.Crowley.pdf это также дает формулу   -  person Rachel Gallen    schedule 10.05.2013
comment
Спасибо за документацию Рэйчел. Это помогает понять математику, лежащую в основе PCA... После дополнительных исследований я знаю, что openCV/emguCV реализует PCA через cvCaclPCA или eigenObjectRecognizer. Меня больше интересует первое, потому что моя цель - получить основную ориентацию объекта, но я не могу заставить его работать и не могу найти никакой полезной документации...   -  person MCorreia    schedule 11.05.2013


Ответы (1)


посмотрите: http://www.emgu.com/forum/viewtopic.php?f=7&t=3066#p6497

Я не знаком с PCA с использованием EmguCV. Я бы использовал библиотеку C# Accord.NET со встроенным классом: PrincipalComponentAnalysis.cs.

так там как шаги:

get image data of an image as double[,] (that is your sourceMatrix)

var pca = new PrincipalComponentAnalysis(sourceMatrix, AnalysisMethod.Center);
pca.Compute();
double[,] components = pca.Transform(sourceMatrix, 0.8f, true); //your image with 80% information kept

convert components to your image 

вы также можете установить количество компонентов вместо информационного порога

person dajuric    schedule 30.06.2013