Это чрезвычайно сложная проблема. Я был частью команды, которая работала над этим в течение нескольких лет, и, разрабатывая и поддерживая другие подобные приложения в течение длительного времени, я могу сказать, что обнаружение вмятин является особенно сложной задачей, и гораздо сложнее, чем кажется на первый взгляд.
Работа алгоритма в лабораторных условиях или на известных изображениях - это одно; разработка системы, которая будет точной и надежной для «естественных» изображений, таких как автомобили, видимые на парковке, вероятно, потребует команды, работающей в течение нескольких лет. Помимо основной проблемы создания алгоритма, существует множество других технических трудностей.
Пример кода, который вы тестировали, неплохое начало. Если бы вы могли найти края вокруг темной правой стороны вмятины, вы могли бы сравнить карту краев автомобиля с дингом и карту краев известного хорошего автомобиля, изображенного под тем же углом при том же освещении. Управление освещением поможет совсем немного.
Проблемы для рассмотрения включают в себя следующее:
- Освещение (гораздо сложнее, чем кажется на первый взгляд)
- Ожидаемая трехмерная поверхность собранной внешней панели (например, из данных CAD)
- Критерии, характеризующие вмятину: площадь, глубина, профиль и т. Д.
- Критерии ложных негативов и ложных срабатываний
- Средства для сохранения данных вмятин и / или вмятин на карте модели автомобиля (или макета бабочки)
- Методология и устройство для измерения «истинных» вмятин: глубина, площадь и т. Д.
- Обширная база данных вмятин от случайной выборки транспортных средств
- Работа с различными цветами краски и отделки
1. Освещение
Как правильно заметил Мартин Б., правильное освещение имеет решающее значение для этой проблемы. Даже при хорошем структурированном освещении вам будет трудно обнаружить небольшие вмятины вблизи характерных линий, промежутки между панелями, ручки и т. Д.
Википедия о структурированном освещении немного тонкая, но это начало понимания принципа:
http://en.wikipedia.org/wiki/Structured_light
Светлые полосы можно использовать для обнаружения вмятин (вмятин) и вмятин (прыщей). Чтобы увидеть динь, вам понадобится относительное движение между источником света и автомобилем. Либо свет + камера движутся вместе относительно автомобиля, либо автомобиль движется мимо света + камеры.
Хотя вход и выход имеют характерный внешний вид, когда они видны на краю светлой полосы, обнаруживаемость данной вмятины зависит от размера и глубины вмятины относительно ширины светлой полосы. Кривизна автомобиля сложна, поэтому довольно сложно представить последовательную полосу света на камеру. По мере того, как светлая полоса перемещается по кузову автомобиля, кривизна и даже интенсивность световой полосы будут меняться.
Одним из частичных решений является обеспечение того, чтобы камера и световая полоса всегда находились под постоянным углом относительно нормали (3D-перпендикуляр) участка проверяемой поверхности. На практике робот должен был бы перемещать камеру точно относительно поверхности тела. Точное перемещение робота требует знания позы (положения и трехмерных углов) кузова автомобиля, что само по себе является неприятной проблемой.
Для любого осмотра в автомобильной промышленности вам необходимо полностью контролировать освещение. Это означает не только размещение источников света по вашему выбору в известных местах, но и блокирование всего остального освещения. Это будет означать довольно большой корпус. Поскольку панели автомобиля изогнуты наружу (почти как сферическая поверхность), они будут отражать свет от источников вокруг них. Чтобы значительно упростить эту проблему, вы можете использовать высокочастотную флуоресцентную панель внутри корпуса, окутанного черным бархатом. Довольно часто приходится сталкиваться с такими крайностями для инспекционных приложений.
2. 3D поверхность
Внешняя поверхность автомобиля состоит из сложных кривых. Чтобы узнать, является ли подозрительное место звоном, вам нужно сравнить это место с известными характеристиками автомобиля. Это означает, что вам нужно будет сопоставить 2D-изображение с камеры с 3D-моделью, просматриваемой под определенным углом. Это не проблема, решаемая быстро, и достаточно сложно добиться успеха, поскольку некоторые компании специализируются на ней.
3. Характеристика дефектов.
Для академических исследований или лабораторных испытаний может быть достаточно разработать алгоритм, который обещает или улучшает существующий метод. Чтобы правильно решить эту проблему для реального коммерческого или промышленного использования, вам необходимо иметь очень подробную спецификацию для размера вмятин, которые вы хотите обнаружить.
Когда мы решали эту проблему, не было разумных отраслевых или национальных стандартов для вмятин (3D-деформации). То есть не было согласованной методики, позволяющей охарактеризовать вмятину по площади, глубине и форме. У нас просто были образцы, которые, по мнению отраслевых экспертов, были плохими, не слишком плохими и незначительными с точки зрения серьезности. Определить «глубину» звона также сложно, поскольку звено представляет собой трехмерный отступ в (как правило) трехмерной поверхности, изгибающейся наружу.
Большие звуки легче обнаружить, но они также менее распространены. Опытный работник может быстро просканировать кузов автомобиля - гораздо быстрее, чем неподготовленный наблюдатель, - и быстро найти мелкие вмятины размером с мизинец. Чтобы оправдать стоимость автоматизированной системы, вам, вероятно, придется соответствовать способности опытного наблюдателя.
4. Критерии обнаружения ошибок
раннем этапе вы должны установить критерии для приемлемых ложных отрицательных и ложных положительных результатов. Даже если вы просто изучаете эту проблему как проект НИОКР и не собираетесь разрабатывать продукт, попробуйте определить критерии обнаружения.
ложно-отрицательный: вмятина присутствует, но не обнаружена
Обычно есть компромисс: увеличьте чувствительность, и вы найдете больше звонков (уменьшите ложные отрицания), но вы также найдете больше звонков, которых нет (увеличьте ложные срабатывания). Довольно легко убедить себя, что алгоритм работает лучше, чем он есть на самом деле: наше естественное предубеждение состоит в том, чтобы замечать дефекты, обнаруженные алгоритмом, и объяснять те, которые он не обнаружил. Проводите слепые, автоматизированные тесты. Если это возможно, попросите кого-нибудь измерить значения и назначить степень серьезности, чтобы вы не знали, каковы истинные измерения.
5. Сохраните данные и / или отобразите их
. Вмятина характеризуется своей серьезностью и расположением на кузове автомобиля. Чтобы узнать его местоположение, вы должны решить проблему соответствия 2D-3D, упомянутую выше.
6. Определение «истинной» формы вмятин. Вмятины
трудно измерить. Острая вмятина и округлая вмятина с одинаковой площадью поверхности и глубиной будут выглядеть по-разному. Измерение вмятин с помощью механических средств приводит к субъективным суждениям, а также довольно утомительно использовать глубиномеры, линейки и т. Д., Когда вам, вероятно, придется измерять десятки, если не больше.
Это одна из сложных инженерных задач, которую необходимо решить для любого проекта по обнаружению дефектов на производстве: как измерить дефект и охарактеризовать его? если для этого существует стандарт, хорошо ли он соотносится с чем-то, что измеряет система контроля? если система проверки не обнаружит, что она "должна" нашла, то кто виноват?
Тем не менее, если система проверки работает достаточно хорошо для выборки известных дефектов, то пользователи могут в конечном итоге довериться ей, и сама система станет стандартом для определения серьезности дефектов.
7. Обширная база данных вмятин.
В идеале вы должны иметь сотни, если не тысячи образцов изображений вмятин разной степени тяжести в разных местах на транспортных средствах сложных производителей. Если вы заинтересованы в поиске вмятин, вызванных авариями в процессе сборки, сбор таких данных может занять много времени. Вмятины, возникающие в процессе сборки, не являются распространенными.
Если вы заинтересованы только в поиске вмятин, вызванных несчастными случаями или ущербом окружающей среде, то это другое дело. Типы вмятин будут отличаться от тех, которые вызваны случайными ударами внутри автосборочного завода.
8. Работа с разными цветами краски
. Действительно, краевые детекторы могут быть достаточно надежными при обнаружении краев на изображениях с различными уровнями контрастности, но может быть довольно обескураживающим видеть, что на самом деле означает «различные уровни контрастности» для разных автомобильных красок и покрытий. , Легкая полоска, которая отлично смотрится на блестящем черном автомобиле, едва заметна на белой машине со старой краской.
Большинство камер имеют относительно ограниченный динамический диапазон, поэтому добиться хорошего контраста как для черных блестящих поверхностей, так и для белых тусклых поверхностей довольно сложно. Вполне вероятно, вам придется автоматически контролировать интенсивность освещения. Это тоже сложно.