Я работаю с openCV на платформе Android. С огромной помощью этого сообщества и техников, я могу успешно обнаружить лист из изображения. Это шаг, который я использовал.
1.Imgproc.cvtColor()
2.Imgproc.Canny()
3.Imgproc.GausianBlur()
4.Imgproc.findContours()
5.Imgproc.approxPolyDP()
6.findLargestRectangle()
7.find the vertices of the rectangle
8.find the vertices of the rectangle top-left anticlockwise order using center of mass approach
9.find the height and width of the rectangle just to maintain the aspect ratio and do warpPerspective transformation.
После применения всех этих шагов я могу легко получить документ или самый большой прямоangularьник из изображения. Но это сильно зависит от разницы в интенсивности фона и листа документа. Поскольку Canny edge работает по принципу градиента интенсивности, разница в интенсивности всегда предполагается со стороны реализации. Вот почему Canny учел различные пороговые параметры.
- Нижняя Тершольд
- Хейгер Тершольд
Поэтому, если градиент интенсивности пикселя больше, чем верхний порог, он будет добавлен в качестве граничного пикселя в выходное изображение. Пиксель будет полностью отклонен, если его градиент интенсивности ниже нижнего порога. И если пиксель имеет интенсивность между нижним и верхним порогом, он будет добавлен в качестве граничного пикселя, только если он подключен к любому другому пикселю, значение которого больше, чем верхний порог.
Моя основная цель - использовать функцию обнаружения краев Canny для сканирования документов. Поэтому я хочу знать, как динамически вычислять эти пороговые значения, чтобы они могли работать как с темным, так и со светлым фоном.
Я много пробовал, вручную настраивая параметры, но не смог найти никакой связи, связанной со сценариями.
Надеюсь, я проясню свою точку зрения, и спасибо заранее