У меня есть набор изображений, на которых я выполнил обнаружение кромок с использованием OpenCV 3.1. Края хранятся в MAT OpenCV. Может ли кто-нибудь помочь мне в обработке для Java SVM поезда и тестового кода на этих наборах изображений?Как SVM Настроить мои изображения Edge с помощью Java-кода
ответ
После обсуждения в комментариях я предоставляю вам примерный проект, который я построил для андроид-студии некоторое время назад. Это использовалось для классификации изображений в зависимости от цветовых пространств Lab.
//1.a Assign the parameters for SVM training here
double nu = 0.999D;
double gamma = 0.4D;
double epsilon = 0.01D;
double coef0 = 0;
//kernel types are Linear(0), Poly(1), RBF(2), Sigmoid(3)
//For Poly(1) set degree and gamma
double degree = 2;
int kernel_type = 4;
//1.b Create an SVM object
SVM B_channel_svm = SVM.create();
B_channel_svm.setType(104);
B_channel_svm.setNu(nu);
B_channel_svm.setCoef0(coef0);
B_channel_svm.setKernel(kernel_type);
B_channel_svm.setDegree(degree);
B_channel_svm.setGamma(gamma);
B_channel_svm.setTermCriteria(new TermCriteria(2, 10, epsilon));
// Repeat Step 1.b for the number of SVMs.
//2. Train the SVM
// Note: training_data - If your image has n rows and m columns, you have to make a matrix of size (n*m, o), where o is the number of labels.
// Note: Label_data is same as above, n rows and m columns, make a matrix of size (n*m, o) where o is the number of labels.
// Note: Very Important - Train the SVM for the entire data as training input and the specific column of the Label_data as the Label. Here, I train the data using B, G and R channels and hence, the name B_channel_SVM. I make 3 different SVM objects separately but you can do this by creating only one object also.
B_channel_svm.train(training_data, Ml.ROW_SAMPLE, Label_data.col(0));
G_channel_svm.train(training_data, Ml.ROW_SAMPLE, Label_data.col(1));
R_channel_svm.train(training_data, Ml.ROW_SAMPLE, Label_data.col(2));
// Now after training we "predict" the outcome for a sample from the trained SVM. But first, lets prepare the Test data.
// As above for the training data, make a matrix of (n*m, o) and use the columns to predict. So, since I created 3 different SVMs, I will input three separate matrices for the three SVMs of size (n*m, 1).
//3. Predict the testing data outcome using the trained SVM.
B_channel_svm.predict(scene_ml_input, predicted_final_B, StatModel.RAW_OUTPUT);
G_channel_svm.predict(scene_ml_input, predicted_final_G, StatModel.RAW_OUTPUT);
R_channel_svm.predict(scene_ml_input, predicted_final_R, StatModel.RAW_OUTPUT);
//4. Here, predicted_final_ are matrices which gives you the final value as in Label(0,1,2... etc) for the input data (edge profile in your case)
Теперь, надеюсь, у вас есть идея, как работает SVM. Вам в основном необходимо выполнить следующие действия:
Шаг 1: Определите ярлыки - В вашем случае Жесты из профиля края.
Шаг 2: Присвоение значений меток - Например, если вы пытаетесь классифицировать тактильные жесты - Open Hand = 1, Закрытая рука/Кулак = 2, Недурно = 3 и так далее.
Шаг 3: Подготовьте данные обучения (профили кромок) и ярлыки (1,2,3) и т. Д. В соответствии с вышеописанным процессом.
Этап 4: Подготовьте данные для прогнозирования с использованием преобразования, рассчитанного с использованием SVM.
Очень важен для SVM на OpenCV - Нормализация данных, убедитесь, что вы все матрицы из одного типа - CvType
Надеется, что это помогает. Не стесняйтесь задавать вопросы, если у вас есть какие-либо сомнения и публикуйте то, что вы пробовали. Я могу решить проблему для вас, если вы пришлете мне несколько изображений, но тогда вы ничего не узнаете? ;)
B_channel_svm.train (edge1, Ml.ROW_SAMPLE, reponses.col (1)); в приведенном выше коде. Я проверил, что у меня одинаковое количество строк ребер1 и ответов. Но столкнулась с ошибкой OpenCV Error: Assertion failed (_layout == ROW_SAMPLE || _layout == COL_SAMPLE) в void cv :: ml :: TrainDataImpl :: setData. в некоторой строке data.cpp 271 –
вы можете помочь мне объяснить, как вы создали training_data, label_data? –
Можете ли вы обновить свой код в вопросе? –
- 1. Как классифицировать изображения с помощью SVM
- 2. Как тренировать мои собственные svm в opencv с помощью C++?
- 3. Как настроить параметры уровня SVM?
- 4. Как настроить SVM с помощью патча необработанного изображения с переменным размером?
- 5. Почему мои изображения не отображаются в Microsoft Edge?
- 6. Как настроить мои кнопки?
- 7. Загрузка изображения в Edge
- 8. Как классифицировать с помощью SVM-классификатора?
- 9. Как настроить Microsoft Edge на CSS?
- 10. SVM для классификации характеристик изображения?
- 11. Как построить модель svm с помощью JRI?
- 12. Как классифицировать текст с помощью SVM scikit?
- 13. Как обрабатывать условные функции с помощью SVM?
- 14. текст классификации с помощью SVM
- 15. Как мне настроить мои VirtualHosts?
- 16. SVM-классификатор и тестовые изображения
- 17. Adobe Edge и динамические изображения
- 18. Как определить IE/Edge с помощью javascript?
- 19. Как связать мои изображения svg (raphael.js)
- 20. Как получить мои изображения для изменения размера с помощью shuffle.js?
- 21. Обнаружение объекта с помощью OpenCV SVM
- 22. Настроить мою легенду на мои очки с помощью xyplot?
- 23. Получение ошибки с помощью SVM с SURF
- 24. как сделать мои изображения отзывчивыми?
- 25. Как настроить яркость и контрастность изображения с помощью слайдера?
- 26. Как настроить правильный размер изображения с помощью UIImageView и UIImage?
- 27. Как настроить яркость изображения в Android с помощью OpenCV?
- 28. Как настроить яркость и контрастность изображения с помощью GPUImage?
- 29. Как настроить растягивание фонового изображения с помощью CSS
- 30. Warbler: Где мои изображения
Что вы хотите, чтобы SVM работал с этими изображениями? Можете ли вы уточнить? –
Мы хотим классифицировать изображения с помощью SVM, но с проблемой подготовки SVM в java opencv 3.1 –
Конечно, вы хотите классифицировать, SVM делает именно это. Что вы подразумеваете под «неприятностью» здесь? –