У меня всегда есть квадратные/прямоугольные изображения, иногда мне тоже нужно сопоставлять изображения. Ниже приведены 2 изображения, например. Бал - это образ шаблона, а второй - это источник, где нужно искать шаблон. Я могу сделать фон шаблона прозрачным, но это дает ошибку, делая его белым, уменьшает счет матча, потому что, как вы видите на исходном изображении, вокруг шара нет белого. Это всего лишь 2 примера. У вас есть предложения/решения?Шаблон соответствия OpenCV для круглых изображений в Java
ответ
Если вы знаете, пиксели, принадлежащие к шаблону, вы можете написать согласовани
сумму абсолютных разностей проб (псевдокод)
Mat I, T // image and template
vector<Point> template_pixels
Rect sliding_window
vector<double> match_rates
for all rows in image
update sliding_window
for all cols in image
update sliding_window
Mat W = I(sliding_window)
sum = 0
for all rows in template
for all cols in template
if(template_pixels contains pixel i)
sum += abs(W(i) - T(i))
end for
end for
match_rates.pushback(sum)
end for
end for
minMaxLoc(match_rates)
и оптимизировать его с помощью многопоточности по строкам изображений
Это нормально, вы все еще можете использовать matchTemplate()
и получить отличные результаты:
You can find a decent tutorial on OpenCV's documentation. Кстати, это результат демонстрации, которую там поделили.
Соответствие шаблону находит лучший результат, оно будет отмечать квадрат, даже если шаблон не находится в исходном коде. Если искомое изображение действительно находится в источнике, то оценка будет равна 0,9987 ... но в этом случае с белыми оценка будет 0,7 ... Я сделаю, давайте скажем 1000 сравнений для разных изображений, некоторые из них будут зелеными, некоторые из них будут иметь синий, серый. Который всегда будет влиять на соответствующий счет. Im устанавливает пороговое значение в соответствии с найденным или не найденным для моего случая результатом оценки, и случайные пороги будут проблемой. Я знаю, что это будет всегда выше 0,6 ... но все же ... – Anarkie
Я думаю, вы также можете использовать для этого гистограмму. Там вы также можете использовать произвольную маска формы. Сконструируйте маску с обратным изображением, и вы обнаружите пик в области, где объект появляется на изображении, как показано на изображениях (отображается цвет и масштабируется) ниже.
backprojected:
свертке:
EDIT:
Это основано на этом paper. Я экспериментировал и надеялся опубликовать в блоге. Это на C++.
// model histogram: this is the football template
calcHist(&model32fc3, 1, (const int*)channels, modelMask, histModel, 3, (const int*)histSize, (const float**)ranges, true, false);
// image histogram
calcHist(&image32fc3, 1, (const int*)channels, Mat(), histImage, 3, (const int*)histSize, (const float**)ranges, true, false);
// ratio histogram
divide(histModel, histImage, histRatio);
cv::min(histRatio, 1.0, histRatio);
// backproject ratio histogram
calcBackProject(&image32fc3, 1, (const int*)channels, histRatio, backprj, (const float**)ranges);
// convolve the kernel with the backprojected image
filter2D(backprj, conv, CV_32F, modelMask);
Не могли бы вы привести пример с кодом, пожалуйста? или ссылку на учебник, где это сделано? – Anarkie
Добавлен код. Я все еще экспериментирую. Я обновлю код или предоставил ссылку, если у меня появится возможность опубликовать это в моем будущем блоге. – dhanushka
Я знаю C++, но работаю в Java правильно, не могли бы вы разместить его в Java?Или я попробую это после того, как вы полностью закончите. – Anarkie
- 1. Шаблон соответствия OpenCV для Android
- 2. Шаблон соответствия OpenCV
- 3. Шаблон соответствия для приложения android-opencv
- 4. Opencv Android-шаблон для Java
- 5. Шаблон соответствия OpenCV Подобный объект
- 6. Шаблон соответствия OpenCV против видео
- 7. OpenCV - Обнаружение круглых форм
- 8. OpenCV в Java для фильтрации изображений
- 9. Шаблон соответствия регулярному выражению Java
- 10. OpenCV Чтение изображения для соответствия шаблону
- 11. шаблон соответствия для равенства
- 12. Флаг соответствия шаблону OpenCV для состояния отказа
- 13. OpenCV - C++ для Java - Шаблон Match
- 14. Предотвращение неправильного шаблона соответствия OpenCV
- 15. Изображение не подходит для просмотра круглых изображений
- 16. Функция соответствия Opencv неправильно подходит для обрезанных изображений разных размеров и изображений, взятых из разных источников?
- 17. Шаблон Hamcrest для соответствия токену
- 18. Распознавание изображений на OpenCV java
- 19. Разбиение строки и шаблон соответствия в Java
- 20. Как сделать шаблон соответствия строки в java?
- 21. Как объявить шаблон соответствия в Java?
- 22. php preg_match_all шаблон для круглых скобок
- 23. шаблон соответствия рамки?
- 24. шаблона соответствия в C# для удаления серии в круглых скобках
- 25. Шаблон соответствия в игральных карточках
- 26. Соответствие двух изображений в OpenCv
- 27. шаблон соответствия в javascript
- 28. шаблон соответствия в Perl
- 29. шаблон с использованием функций openCV
- 30. шаблон соответствия в строке
Я не знаю python, если это python, я могу попробовать его :) Я написал это в berky. это очень простой, но мощный язык - и удивительный, как вы уже выяснили, - просто трудно привыкнуть. 8) – baci
Вы правы, Python немного отличается. Если бы это был код Java, я бы добавил +1. – karlphillip