2013-03-19 3 views
1

У меня есть изображение в градациях серого, и я бы преобразовал его только в черно-белый. Но для этого мне нужно вычислить правый порог, и я бы хотел, чтобы этот порог был равен средней яркости изображения.Оцените среднюю яркость изображения в оттенках серого с opencv

Итак, мне было интересно, как я мог вычислить этот порог с помощью OpenCV. Есть ли способ, существующий в рамках, сделать это легко?

Я хотел добавить каждое значение яркости (от 0 до 255) для каждого пикселя, а затем разделить сумму на число пикселей, но метод, который я нашел для доступа к этим данным, очень медленный (.at (i , j) [k] для изображения rgb). Но моя фотография в оттенках серого, и я бы хотел, чтобы она была довольно быстрой, поэтому ее можно запустить на iPhone.

ответ

3

Для расчета этих статистических данных используйте cv::sum(), или еще лучше, cv::mean().

Однако OpenCV уже имеет функцию пороговой, которая делает все, что вы хотите сделать для вас: cv::adaptiveThreshold()

Также вы должны проверить метод Оцу, ознакомьтесь с разделом cv::threshold() с THRESH_OTSU опцией.

+1

Наконец, мой метод не работает из-за плохого качества изображения, поэтому даже если «sum» и «mean» делают то, что я хотел, я буду использовать cv :: adaptiveThreshold(), что намного лучше , – Tiffado

-1

Вы можете использовать алгоритм Монте-Карло, выборки случайных точек вместо всех точек изображения, пока вы не накрыли 1% изображения. Результат должен быть очень похож на фактическое значение.

Смежные вопросы