Jump to content
Compvision.ru
ColaClassic

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

Recommended Posts

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

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

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

Share this post


Link to post
Share on other sites

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

  • Like 1

Share this post


Link to post
Share on other sites

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

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

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

  • Like 1

Share this post


Link to post
Share on other sites

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

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

  • Like 1

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

  • Like 1

Share this post


Link to post
Share on other sites
3 часа назад, mrgloom сказал:

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

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

Share this post


Link to post
Share on other sites
9 часов назад, ColaClassic сказал:

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

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

  • Like 1

Share this post


Link to post
Share on other sites
В 31.05.2018 at 02:22, idrua сказал:

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

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

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

Share this post


Link to post
Share on other sites
23 часа назад, ColaClassic сказал:

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

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

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

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×