Перейти к содержимому
Compvision.ru
ColaClassic

Поиск сколов, неровностей, трещин и царапин на керамической плитке

Recommended Posts

Наведите на путь истинный, пожалуйста. Пусть имеется какая-нибудь прямоугольная керамическая плитка. Камера направлена на неё вертикально вниз (перпендикулярно). Предположим, что она НЕ окрашена в какой-то однотонный цвет, а находится в процессе производства (т.е. её цвет примерно одинаково-однотонный, но естественно не без погрешностей - где-то темнее, где-то светлее участки). Задача найти на этой плитке какие-нибудь сколы, трещины или царапины.

Можно выделить внешний контур этой плитки, а что потом? Как определить есть ли внутри этого контура какие-либо вышеописанные дефекты?

Нужен наиболее простой, но в то же время действенный метод. У кого какие идеи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Две камеры используйте(стерео), будет проще. Хотя-бы исключите блики и перепады освещения. 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нейросеткой можно найти 99% всех дефектов. Но это не самый простой способ. Это самый сложный и самый точный. Размечать датасет нужно будет ручками, а это долго и сложно.

Самый простой способ — фильтрами Габора (возможно в замесе с чем-то еще). После применения фильтра появятся нехарактерные для плитки линии под углами. Точность будет гораздо ниже по сравнению с сеткой, но выше 90% (естественно, ИМХО).

Может быть кластеризация по цвету что-то даст. Или тот же FloodFill с параметрами закраски(чтобы он закрашивал только очень близкие по цвету сегменты).  Или watershed. Но сложно что-то предположить не видя картинок. Надо пробовать разные варианты.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если надо просто ответить на вопрос да \ нет, то ищем rect, вырезаем и пихаем в классификатор.

 А так все равно надо смотреть на фото, от этого будет зависеть сложность задачи.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

LexaP, спасибо за совет.

В 29.05.2018 at 11:56, idrua сказал:

Самый простой способ — фильтрами Габора

idrua, меня заинтересовал ваш второй способ) Попробую изучить данный фильтр. Надо глянуть реализован ли он на OpenCV, что-то не встречал такой.
 

В 29.05.2018 at 15:25, mrgloom сказал:

то ищем rect, вырезаем и пихаем в классификатор.

mrgloom, область по какому критерию искать? И в какой классификатор вставить потом? В какой-то сторонний, который раскидывает дефект на вид дефекта (скол, трещина, царапина и т.д.)?

Я понимаю, что трудно предложить решение задачи, не имея при этом примерной картинки. Но дело в том, что я сам не знаю какого рода картинка должна быть. Мне чисто на словах описали суть проблемы (мол, нужно определять дефектованные плитки на их производстве). Вот я и стараюсь максимально нарыть информации по решению данного вопроса и попробовать хотя бы какой-нибудь макет накидать программы. Пусть он даже в реальности пока что не будет 10 из 10 дефектов ловить и идентифицировать. Хоть что-то. Пусть какой-то дефект не сильно заметный пропустит (не спалит), а другой более явный (внешне) заметит.

p.s. определять какой конкретно дефект присутствует не требуется, нужно просто забраковать плитку, если нашёлся хоть какой-нибудь дефект (ну естественно ввести какие-то допустимые рамки + реализовать так, чтоб он случайный переход цвета не принимал за дефект)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Главная сложность(зависит от фото) это детектирование ректа плитки, потом разворот, кроп.

Любой бинарный классификатор который отвечает на да\нет например linear SVM, любые фичи color hist например и т.д. или сразу пихать в CNN кроп.

Для классификатора сложность так же может представлять если кол-во битых плиток очень маленькое (несбалансированная выборка).

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, mrgloom сказал:

Главная сложность(зависит от фото) это детектирование ректа плитки, потом разворот, кроп.

Кстати, а зачем? Нейросетка и так съесть картинку без всех этих телодвижений. См. пример U-Net сетей. Например Carvana на Kaggle. Другое дело с разметкой -- это на месяцы ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, ColaClassic сказал:

idrua, меня заинтересовал ваш второй способ) Попробую изучить данный фильтр. Надо глянуть реализован ли он на OpenCV, что-то не встречал такой.

Реализован. Но это не панацея. Фильтрами можно будет уловить большие трещины под углами (это быстро, просто и мало кода). С пятнами уже тяжелее будет. И совсем невозможно будет уловить отбитые куски на краях плитки. Поэтому просто фильтров недостаточно. Действительно, одним из простых способов решения подобных задач является создание классификатора. Но, как мне кажется, с подобными терминами вы еще не знакомы. Только на обучение ML в среднем уходит от 3 месяцев. Плюс поиск признаков для классификатора: цвет, тон, насыщенность, а может средний тон сегмента, а может кластеризацией можно что-то сегментировать и т.д. В общем, это всё выльется в месяцы работы, если самому впервые разбираться (это я по своему горькому опыту). И самое печальное здесь, не факт, что заработает на должном уровне. Такой он, machine learning. Это своего рода искусство.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 31.05.2018 at 02:22, idrua сказал:

Реализован. Но это не панацея. Фильтрами можно будет уловить большие трещины под углами (это быстро, просто и мало кода). С пятнами уже тяжелее будет. И совсем невозможно будет уловить отбитые куски на краях плитки. Поэтому просто фильтров недостаточно. Действительно, одним из простых способов решения подобных задач является создание классификатора. Но, как мне кажется, с подобными терминами вы еще не знакомы. Только на обучение ML в среднем уходит от 3 месяцев. Плюс поиск признаков для классификатора: цвет, тон, насыщенность, а может средний тон сегмента, а может кластеризацией можно что-то сегментировать и т.д. В общем, это всё выльется в месяцы работы, если самому впервые разбираться (это я по своему горькому опыту). И самое печальное здесь, не факт, что заработает на должном уровне. Такой он, machine learning. Это своего рода искусство.

Вы правы. Много того, о чём здесь писали знающие люди, я не понял) Т.к. в компьютерном зрении я тотал новичок. Прям совсем никогда и ни разу не сталкивался с этим. Это всё выливается, пока что, в мою мини-научную работу, так скажем. Сроки поджимают уже, поэтому я хотел в самом что ни на есть простейшем виде реализовать хотя бы поиск трещин. Для этого я попробую изучить фильтр, который вы мне посоветовали.
На сегодняшний момент удалось в довольно-таки сыром виде реализовать проверку на геометрическую форму, измерение геометрических размеров, нахождение углов.

Я прям завидую вашим познаниям в ML:D Обладая такими же знаниями, я бы, наверное, за пару дней написал прогу требуемую:lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
23 часа назад, ColaClassic сказал:

Я прям завидую вашим познаниям в ML:D Обладая такими же знаниями, я бы, наверное, за пару дней написал прогу требуемую:lol:

Это зря, завидовать тут нечему. Я, например, одну из своих задач уже как год решаю, и всё безуспешно. Сперва пробовал пакетом OpenCV, потом ML(классификаторы разные) + OpenCV. И только теперь DL. 

Ну и есть четкое деление ML и CV. Это две разные области наук. Они конечно частично пересекаются, но крайне незначительно. CV нужна для поиска признаков (сегменты, цвета сегментов, линии, да всё что угодно). В ML по этим признакам можно обучить модель, которая и будет "искать" трещины и царапины. Есть еще DL, но там вообще всё сложно. За пару дней вашу задачу вряд ли кто решит. За месяц, имея большой датасет с картинками, может быть.
Если хотите решать самостоятельно, то это очень надолго. Изучить Python, пройти пару курсов по ML, посмотреть примеры работ по CV. А если не взлетит, то смотреть в сторону DL. Как-то так... Естественно, ИМХО. Возможно у знатоков будет другое мнение.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×