Соответствие кривой в Java
Первый вопрос здесь, так что извините, если что-то, что я спрашиваю, совершенно глупо.
Я работаю в проекте по распознаванию форм, где я должен разработать приложение, которое получит два изображения: оригинал и эскиз, сделанные пользователем. Я должен определить контуры двух изображений и найти наилучшее совпадение на исходном изображении, соответствующее эскизу, сделанному пользователем.
Я уже изучал некоторые основы обнаружения краев Канни и смог получить контуры нескольких изображений. После того, как у меня есть контуры, мне нужно проанализировать все контуры на изображении и найти наилучшее совпадение, не учитывая перемещение, вращение, масштабирование и окклюзию.
Затем я нашел этот код, который делает именно то, что я хочу: http://www.morethantechnical.com/2012/12/27/2d-curve-matching-in-opencv-w-code/ но на C++.
Знаете ли вы альтернативу для аналогичного кода в Java или какой-либо алгоритм, который может быть полезен для меня? Я также обнаружил BoofCV, но, похоже, такая задача не выполняется.
Спасибо за терпеливость.
РЕДАКТИРОВАТЬ:
Я искал другие способы сделать это, и я нашел расстояние Хаусдорфа: http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/98/normand/main.html
Можно ли изменить этот алгоритм, чтобы он был инвариантным к вращению? Они говорят только о переводе и масштабировании.
1 ответ
Как вы упоминали, у вас уже есть исходный код на C++ и вы не можете найти версию Java - возможно, вам лучше всего преобразовать код C++ в код Java. Если вам не нужны все части программы на C++, вы можете захотеть скрыть только те части (классы), которые вам нужны.
Преобразование из C++ в Java не всегда может быть тривиальным, но я предполагаю, что будет проще, если вы точно знаете, что вы хотите и как ваша программа должна вести себя. Ниже приведена ссылка на некоторые инструменты преобразования - хотя они могут быть не бесплатными.
http://www.researchgate.net/post/How_to_convert_the_C_C_code_to_java2