Ссылка на суть кода. Я пытаюсь восстановить рваную бумагу.Первым шагом является обнаружение разорванного края:
![finding the torn edge](https://i.stack.imgur.com/z9LcN.png)
Затем один разорванный край поворачивается и сравнивается с другим разорванным краем:
![rotating and matching](https://i.stack.imgur.com/SbLup.gif)
Документ выравнивается, когда два контура соответствуют друг другу.Одна часть вращается и рваные края сравниваются.Оценка под названием match
описывает соответствие между двумя контурами:
tempA = draw_contour(tempA, b, 123, 3)
tempB = draw_contour(tempB, a, 123, 3)
tempC = tempA + tempB
_, thresh = cv2.threshold(tempC, 220, 255, cv2.THRESH_BINARY_INV);
thresh = 255 - thresh
match = sum(sum(thresh))
Эти два контура плохо сочетаются друг с другом:
Эти контуры очень хорошо сочетаются друг с другом.Здесь документ выровнен: ![good fitting](https://i.stack.imgur.com/b6uOh.png)
Расчет соответствия контура является базовым.Я рисую контуры на отдельных изображениях.Изображения суммируются и применяется порог.Это подсчитывает количество пикселей, где два контура перекрываются.Этот метод работает хорошо, но он слишком медленный, чтобы быть практичным при сравнении нескольких ребер.
Как рассчитать, насколько хорошо совпадают два контура рваных краев?