Разница между адаптивным порогом и нормальным порогом в OpenCV
-
25-10-2019 - |
Вопрос
У меня есть этот серый видеопоток:
Гистограмма этого изображения:
Пороговое изображение по:
threshold( image, image, 150, 255, CV_THRESH_BINARY );
я получил :
Что я ожидаю.
Когда я делаю адаптивное пороговое значение с:
adaptiveThreshold(image, image,255,ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY,15,-5);
я получил :
Что выглядит как обнаружение края, а не пороговое значение. То, что я ожидал, было черно -белыми областями. Итак, мой вопрос: почему это выглядит как обнаружение краев, а не пороговое значение.
спасибо заранее
Решение
Адаптивный порог работает как это:
Функция преобразует изображение серого в двоичное изображение в соответствии с формулами:
THRESH_BINARY
THRESH_BINARY_INV
где t (x, y) является порогом, рассчитанным индивидуально для каждого пикселя.
Пороговое значение работы иначе:
Функция применяет пороговое значение с фиксированным уровнем к одноканальному массиву.
Так что это звучит так, как адаптивированная решалка вычисляет пороговый пиксель за пикселем, тогда как порог вычисляет его для всего изображения-оно измеряет все изображение одним правителем, тогда как другой делает новый «правитель» для каждого пикселя.
Другие советы
У меня была такая же проблема с адаптивным порогом для целей OCR. (Извините, это Python, а не C ++)
img = cv.LoadImage(sys.argv[1])
bwsrc = cv.CreateImage( cv.GetSize(img), cv.IPL_DEPTH_8U, 1)
bwdst = cv.CreateImage( cv.GetSize(img), cv.IPL_DEPTH_8U, 1)
cv.CvtColor(img, bwsrc, cv.CV_BGR2GRAY)
cv.AdaptiveThreshold(bwsrc, bwdst, 255.0, cv.CV_THRESH_BINARY, cv.CV_ADAPTIVE_THRESH_MEAN_C,11)
cv.ShowImage("threshhold", bwdst)
cv.WaitKey()
Последним параметром является размер соседства, используемого для расчета порога для каждого пикселя. Если ваш район слишком маленький (у меня было 3), он работает как обнаружение краев. Как только я сделал это больше, это сработало, как и ожидалось. Конечно, «правильный» размер будет зависеть от разрешения вашего изображения и размера функций, на которые вы смотрите.