Я занимаюсь проектом обработки изображений. Для некоторой части моего проекта, чтобы найти хорошее пороговое значение, мне нужно найти пики и впадины гистограммы изображения. Я разрабатываю свой проект на С# .net, но мне нужен алгоритм или образец кода на любых языках, таких как (Java, C, C++,....), чтобы понять логику этого. Я могу конвертировать в С# самостоятельно. любой документ или алгоритм или кусок кода... спасибо
поиск пиков на гистограмме изображения
Ответы (2)
Трудно превзойти метод Оцу для бинарного порога. Даже если вы настаиваете на самостоятельной реализации поиска локальных экстремумов, метод Оцу даст вам хороший результат для сравнения.
Если вы уже вычислили свою гистограмму, найти пики и впадины с вычислительной точки зрения будет тривиально (перебрать ее и найти локальные экстремумы). Что не является тривиальным, так это найти «хорошие» пики и впадины, чтобы сделать некоторую сегментацию/порог. Но это не вопрос кодирования, это вопрос моделирования. Вы можете погуглить.
Если вам нужен простой рецепт, и если вы знаете, что ваша гистограмма имеет «по существу» два пика и впадину посередине («бимодальная» гистограмма), и вы хотите найти эту впадину, я однажды реализовал следующую специальную процедуру. , с относительным успехом:
- Вычислить все экстремумы гистограммы (относительные максимумы/минимумы, включая границы)
- Если есть только два максимума И если между этими максимумами есть только один локальный минимум, мы нашли долину. Верни это.
- В противном случае сгладьте гистограмму (например, скользящее среднее) и перейдите к первому шагу.