#python #image #opencv #image-processing #threshold
Вопрос:
В настоящее время я работаю над проектом. Я должен отделить элементы образов, которые у меня есть. На первом изображении вы видите гистограмму одного из них. Я хочу вычислить порог, но не могу найти метод вычисления порога, который позволил бы мне иметь порог около 135 (это более или менее идеальный порог, но я не хочу использовать фиксированный порог). Эта гистограмма сделана на зеленом канале, потому что на ней легче идентифицировать эти цвета (любая другая идея приветствуется). И второе изображение является примером полученного изображения.
Заранее спасибо
Комментарии:
1. значит, вам нужно отделить бледные участки от розовых?
2. Я думаю, что это выиграло бы от операции маскировки. выберите все пиксели, которые не являются черными, поместите их в один массив (вектор строки или столбца). используйте для этого numpy. затем запустите какой-нибудь автоматический порог (otsu?) для этого… чтобы получить пороговое значение, которое вы затем примените к исходному изображению в другом (фиксированном) пороге.
3. @ChristophRackwitz Как я могу это сделать? Значение по умолчанию в массиве равно 0, поэтому, даже если я скопирую, у меня все равно будет черная сторона. Можете ли вы показать мне, как это сделать?
4. набросок:
mask = (im != 0).any(axis=2); selection = im[mask]; (the_threshold, _) = cv.threshold(selection, ...); thresholded = cv.threshold(im, the_threshold, ...)
5. @cedrik24 Как ты в итоге это сделал?
Ответ №1:
Вариант 1:
- прежде всего, мы хотим устранить черный цвет, поэтому, используя гистограмму, мы получаем общее количество пикселей от 0 до 50 (например). =
DarkPixelsCount
- затем мы начинаем считать пиксели, начиная с 255, и накапливаем общее количество =
LighPixelsCount
- начиная с 255 мы проверим
if (LighPixelsCount >= (90% of (TotalPixelsCount - DarkPixelsCount))
, когда это условие будет выполнено, тогда это хорошая пороговая точка.
Примечание: фиксированные номера, которые я выбрал, например, вы можете использовать, чтобы получить лучшие результаты
Вариант 2:
- Используйте гамма-коррекцию с очень высоким значением (например, 6,99).
- затем выберите высокий порог (например, 213)
результат