Допустим, у меня есть серия инфракрасных снимков, и задача состоит в том, чтобы изолировать человеческое тело от других объектов на снимке. Проблема заключается в шуме от других относительно горячих объектов, таких как лампы и их «горячие» оттенки.
Простые методы определения порога, такие как бинарные и / или Otsu, не дали хороших результатов на сложных (шумных) изображениях, поэтому я решил сделать это вручную.
Результаты не ужасны, но я думаю, что они могут быть улучшены. Здесь я просто выбираю пиксели по значению оттенка HSV. Более или менее горячие пиксели расположены в этой области: оттенок < 50, оттенок> 300. Моя главная проблема здесь — это розовые пиксели, которые иногда являются шумом от ламп, но иногда являются частями человеческого тела, поэтому я не могу просто отбросить их, не нанеся существенного ущерба результатам: например, на левой картинке это «уничтожит» половину левой руки и так далее.
В качестве последнего средства я мог бы использовать сильную фильтрацию и эрозию, но я все еще верю, что есть способ как-то сказать OpenCV: эй, мне не нужны эти розовые области, если они не являются частью большого горячего кластера.
Любые идеи, ключевые слова, методы, хорошие статьи? Заранее спасибо
Данные РПИ предположительно монотонно пропорциональны (если не линейны) температуре, и это должно привести к изображению в градациях серого.
Ваши примеры раскрашены с помощью цветовой карты — цвет передает только один канал фактической информации. Было бы лучше, если бы вы могли работать непосредственно с изображением в оттенках серого (возможно, переназначить изображения в оттенки серого).
Затем посмотрите, можете ли вы линеаризовать изображения в соответствии с фактической шкалой температуры, чтобы значение в пикселях представляло собой температуру. Как только вы это сделаете, вы сможете закрепить ваше изображение в диапазоне температур, в котором, как вы ожидаете, появится человек. Проверьте таблицы данных вашей камеры / тепловизора для формулы преобразования.
Других решений пока нет …