Глядя на ваше изображение результата, я думаю, что вы используете только канал H исходного изображения в своем алгоритме. Ложное положительное обнаружение может наследоваться от того, что некоторая часть здоровой кожи имеет такое же значение H, что и гематома. Вы можете видеть на изображении канала H в масштабе qrey, что обе части имеют одинаковые значения:
Разница между двумя частями заключается в значении насыщенности. На следующем изображении вы можете видеть S-канал исходного изображения, и на нем прекрасно видно, что на гематоме насыщенность намного выше, чем на другой части руки:
Этого следовало ожидать, поскольку гематома имеет гораздо более насыщенный цвет, чем здоровая кожа.
Итак, я предлагаю вам использовать в вашем алгоритме как H-, так и S-канал, т. е. вы должны учитывать только те части H-изображения, где S-изображение содержит высокие значения насыщенности. Возможное и простое решение для этого состоит в том, что вы выполняете бинаризацию изображений H и S, а с помощью операции AND вы можете выполнить эту фильтрацию:
Изображение H после бинаризации:
Изображение S после бинаризации:
Изображение после операции H&S:
Вы можете видеть, что на результирующем изображении только часть гематомы белая (за исключением некоторого шума, но вы можете легко его устранить, например по размеру или по морфологической фильтрации).
РЕДАКТИРОВАТЬ
Важно отметить, что бинаризация является одним из наиболее важных (а иногда и очень сложных) шагов в алгоритмах обнаружения объектов, а именно бинаризация является первым выделением объектов для обнаружения.
Если внешние условия (освещение, цвет объектов и т.д.) существенно не меняются от изображения к изображению, можно использовать фиксированные пороги бинарного разложения. Если эта постоянная среда не может быть обеспечена, вы должны использовать более сложные методы. Есть много возможностей, которые вы можете использовать, здесь вы можете прочитать несколько примеров:
Несколько решений основаны на анализе гистограмм: на гистограммах с объектами всегда больше локальных максимумов, положение которых может меняться в зависимости от окружения, и если вы их найдете, то можете легко адаптировать порог бинаризации.
Например, гистограмма канала H исходного изображения выглядит следующим образом:
Первый максимум принадлежит фону , второй на кожу и последний на гематом. Можно предположить, что эти 3 порога присутствуют на каждом изображении, только их положение меняется в зависимости от освещения или других условий. Чтобы установить порог между 2-м и 3-м локальным максимумом, можно выделить гематому.
Наконец, я предлагаю вам прочитать следующую статью о пороговых значениях в OpenCV: OpenCV — пороговое значение
person
Tibor Takács
schedule
06.02.2015