Искам да открия четириъгълна форма в изображение в Java. Мога да използвам метода HoughLinesP в OpenCV (използвайки javaCV за opencv java обвързване), за да открия линейни сегменти. Но не мога да разбера как да открия четириъгълна форма - има ли друг метод за това или някакъв начин да се използват линиите на дъното? Също така, след като ъглите на четириъгълника бъдат открити, искам той да върне правоъгълник точно както прави този клас - http://www.aforgenet.com/framework/docs/html/7039a71d-a87d-47ef-7907-ad873118e374.htm - има ли еквивалентна библиотека в openCV?
Как да открием четириъгълна форма в изображение в Java?
Отговори (3)
Как изглеждат вашите въведени изображения? Ако откриете много линейни сегменти с трансформацията на Hough, може би можете да опитате да използвате RANSAC, за да генерирате брой хипотези за четириъгълна форма, намерете начин да оцените тяхната годност и да върнете най-добрата хипотеза.
Една хипотеза може да бъде генерирана по следния начин:
- изберете четири произволни линейни сегмента от открития набор от линейни сегменти
- намерете четирите ъгъла, като търсите пресечните точки на линиите, върху които лежат избраните сегменти
- оценете пригодността на четириъгълната форма, определена от тези четири точки
Пригодността може да е площта на хипотетичния четириъгълник (вижте формулата на Бретшнайдер за изчисляване на площ на изпъкнал четириъгълник), разстоянието на ръбовете на четириъгълника от другите линейни сегменти в открития набор или нещо, което отговаря по-добре на вашето приложение.
Това е само идея, все още не съм опитвал да използвам този подход (но планирам да внедря нещо подобно). Кажете ми, ако смятате, че това може да проработи или защо не! :)
Вашият алгоритъм може да бъде нещо подобно
- Обработете изображението, за да намерите ръбове (филтър Canny)
- Приложете трансформация на Hough, за да намерите линии
- Откриване на двойки линии, които се пресичат под ъгъл от 90 градуса (приблизително)
Ако използвате OpenCV библиотека, определено трябва да опитате функцията FindChessboardCorners
. Освен това ето един добър урок.