Приложение для распознавания лего деталей

Обновлено: 17.04.2024

BrickSearch is the fastest and easiest way to find any LEGO set ever made! You can view photos of sets, piece counts, minifigures and building instructions. You can add sets to your collection, and keep a list of your favorites too!

Want to find info about a new LEGO set? Need building instructions for a LEGO set in your collection? Want to find your favorite LEGO set from when you were young? BrickSearch is the fastest way to find it!

- Search for any LEGO set ever made
- Find out how many pieces and minifigures are in each LEGO set
- Browse LEGO set photos in the gallery
- View LEGO set building instructions
- Browse by theme and discover LEGO sets you didn't even know existed
- Add LEGO sets to your collection and wanted list
- Manage your collection or inventory of LEGO sets
- Find out where you can buy any LEGO set

BrickSearch is not affiliated with the LEGO Group. LEGO and the LEGO logo are trademarks of the LEGO Group. © 2017 The LEGO Group.

What’s New

Fixes for some display issues in dark mode

Ratings and Reviews

Excellent app!

I use it daily, and love everything about it. Although, lately the app glitches for me and has not been working. Hopefully it gets fixed because I love the app.
The app keeps saying that there’s an error and that I have to check my connection to the internet even when I have a great connection. At first, I though it’s go away, but it’s been doing that for a while now. I checked to see if there was an update, and noticed that it was already updated. The app is now not pulling up any more than a few sets. I look at the Star Wars tab, and it shows 5 sets out of 776 or however many there are. Please, if you can fix this glitch, I would greatly appreciate it. Other than the glitch, I love the app and can’t wait when it’s fixed so I can continue to use it

Incredible Potential

So I don’t know anything about web design. However I will say that the filtering and searching is severely flawed. A lot of the time the search won’t come up and says it failed but then when you go to years and sift through them you can find some of the sets that didn’t show up. The way the themes are sorted is confusing and doesn’t even work when you try. So finding some stuff is very difficult. The other thing is that some exclusive sets like Comicon Sets and figures are not featured for all themes. So adding them to a wishlist or collection is impossible. Hopefully they will add all of Lego’s content. But moving on from the negative to the positive. I used to use an app called brick by brick which had pretty much the same purpose. While the app design was much simpler and easy to use it was boring. This app is far more stylized and even allows you to use links to buy the particular set your looking at. This app of properly updated and functioning as intended has the potential to be a far better app than brick by brick. I plan to stick with it for now and hope it grows in the given year.

What happened.

This used to be the greatest Lego inventory app on the planet, after the last update the app turned into crap and no one is seems to be fixing it? Now the app doesn’t find sets by number, only words, if it finds it at all? It no longer displays all the sets in a category, it displays multiple copies of sets and it can’t load pictures, and every set in its database says it has zero mini figs? This app is no longer usable, it has become quite pathetic and very aggravating! So until the developer decides to care about their creation and fixes the obviously broken app then their is no reason to waste your time with this app. Please restore this app to its former glory so people with huge collections can manage them…..

App Privacy

The developer, Tiro Media Ltd , indicated that the app’s privacy practices may include handling of data as described below. For more information, see the developer’s privacy policy.

Data Not Collected

The developer does not collect any data from this app.

Privacy practices may vary, for example, based on the features you use or your age. Learn More


Compatibility iPhone Requires iOS 13.0 or later. iPad Requires iPadOS 13.0 or later. iPod touch Requires iOS 13.0 or later. Mac Requires macOS 11.0 or later and a Mac with Apple M1 chip.

На мобильной операционной системе Android уже имеется немало lego-related приложений. Решил сделать обзор двух программ, призванных облегчить поиск коллекционных минифигурок и их каталогизацию. Стоит отметить, что обе программы бесплатные. Тестировались на смартфоне Samsung Galaxy S. Все фотографии кликабельные и имеют разрешение 800х480.

1. Lego Mini Figure Identifier, version 2.2, разработчик © Andrew Pym.
2. Minifig Collector, разработчик © Nic Jansma.

Обе программы в общем выполняют одинаковые функции, но интерфейс у обеих разный, хотя нельзя сказать, что какая-то определённо лучше.

Lego Mini Figure Identifier

Нажимаем иконку с программой в меню телефона (лично я вынес её ещё и на рабочий стол) и попадаем на главную страницу программы:

Вверху нам показано, какой штрих-код следует смотреть, а также имеется три основные пункта. При нажатии на красную кнопку активируется камера с функцией штрих-кода. Подносим пакетик с фигуркой и определяем, что лежит внутри. Естественно, это актуально для первой и второй серий. Если же нам необходимо узнать, что лежит в пакетике третьей серии, нужно нажать на зелёный кубик, после чего открывается следующая страница:


Нас предупреждают, что 3 серия не имеет штрих-кодов, а также о том, что вождь и самурай имеют очень похожее расположение точек. Нажимаем View Bumpcodes и получаем следующее:


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


Возвращаемся в Главное меню программы, нажимаем третью позицию (Browse Mini Figure Catalogue). Нашему вниманию предстаёт такая табличка:


В таблице представлены все 4 серии минифигурок, для первых двух имеются штрих-коды, для третьей – точки, для четвёртой только пока названия и картинки.




Каждая из позиция также кликабельна. Здесь информации ещё больше, помимо рисунка фигурки, звука и кода/точек нам ещё даётся небольшое описание.

Когда открываем позицию 8 во второй серии, слышен шум прибоя и голос дельфинов:


Ещё несколько скриншотов. На мой взгляд, недостаток этой программы – не очень качественные фотографии фигурок.




Все предлагаемые штрих-коды и точки – для Европы.

На этом обзор завершён, переходим ко второй программе.

Открывая программу, попадаем в матрицу из минифигурок. Как видно, присутствуют только фигурки трёх серий.


Каждая позиция кликабельна, однако при открытии странички с минифигуркой никакого звука нет. Зато есть возможность посчитать уже имеющиеся или взятые для проверки. Штрих-код или точки прилагаются.


К примеру, один скейтер уже есть дома, сейчас держим ещё двух.


После матрицы с фигурками также есть меню, где можно сделать следующее:
1. Просмотреть минифигурки списком (только 3 серии).


Обратите внимание, что минифигурки первой серии отмечены чёрным (S1), второй – синем, третьей – зелёным цветом.




Возвращаемся в главное меню программы. При нажатии на Barcodes / Bumpcodes нам открывается список штрих-кодом и точек. Понравилось, что здесь они крупные, на экране в 4 дюйма смотрятся очень чётко.


На этом обзор завершён.

В качестве бонуса хотелось бы сказать, что в «Андроид-маркете» имеется около двух десятков программ, так или иначе связанных с LEGO. Помимо вышеназванных, есть программка-база с инструкциями, тетрис Lego, игра «LEGO Batman», программка, позволяющая оценить выгодность покупки (сравнить с другими магазинами) – GetPrice.

Последние несколько лет я занимался проектированием и изготовлением машины, которая сможет распознавать и сортировать детали LEGO. Важнейшая часть машины — это Capture Unit, небольшое, почти полностью закрытое отделение, в котором есть конвейерная лента, освещение и камера.

Освещение вы увидите чуть ниже.

Камера делает фотографии поступающих по конвейеру деталей LEGO, а затем передаёт изображения по беспроводному каналу на сервер, выполняющий алгоритм искусственного интеллекта для распознавания детали среди тысяч возможных элементов LEGO. Подробнее об ИИ-алгоритме я расскажу в будущих статьях, а эта статья будет посвящена обработке, которая выполняется между «сырым» выводом видео камеры и входом в нейросеть.

Основная проблема, которую мне нужно было решить — это преобразование видеопотока с конвейера в отдельные изображения деталей, которые бы могла использовать нейросеть.

Конечная цель: перейти от «сырого» видео (слева) к набору изображений одинакового размера (справа) для их передачи в нейросеть. (по сравнению с реальной работой gif замедлен примерно вдвое)

Это отличный пример задачи, которая на поверхности кажется простой, но на самом деле ставит множество уникальных и интересных препятствий, многие из которых уникальны для платформ машинного зрения.

Извлечение нужных частей изображения таким образом часто называют распознаванием объектов (object detection). Именно это мне и нужно сделать: распознать наличие объектов, их расположение и размер, чтобы можно было сгенерировать ограничивающие прямоугольники для каждой детали на каждом кадре.

Самое важное — найти хорошие ограничивающие прямоугольники (выше показаны зелёным цветом)

Я рассмотрю три аспекта решения задачи:

  • Подготовка с устранением лишних переменных
  • Создание процесса из простых операций машинного зрения
  • Поддержание достаточной производительности на платформе Raspberry Pi, имеющей ограниченные ресурсы

Устранение лишних переменных

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

Первый шаг — это жёсткая фиксация положения, угла и фокусировки камеры. С этим всё просто — в системе камера закреплена над конвейером. Не нужно мне волноваться и о помехах от других деталей; нежелательные объекты почти не имеют шанса попасть в capture unit. Немного сложнее, но очень важно обеспечить постоянные условия освещённости. Мне не нужно, чтобы распознаватель объектов ошибочно интерпретировал тень от движущейся по ленте детали как физический объект. К счастью, capture unit очень мал (вся область обзора камеры меньше буханки хлеба), поэтому у меня был более чем достаточный контроль над окружающими условиями.

Capture unit, вид изнутри. Камера находится в верхней трети кадра.

Одно из решений — сделать отсек полностью замкнутым, чтобы никакое освещение снаружи не поступало. Я попробовал такой подход, использовав в качестве источника освещения светодиодные ленты. К сожалению, система оказалась очень капризной — достаточно одной небольшой дырочки в корпусе и свет проникает в отсек, делая невозможным распознавание объектов.

В конечном итоге наилучшим решением оказалось «забивание» всех других источников света при помощи заливки небольшого отсека сильным освещением. Оказалось, что источники света, которые можно использовать для освещения жилых помещений, очень дёшевы и просты в использовании.

Получайте, тени!

При направлении источника в крошечный отсек он полностью забивает все потенциальные внешние световые помехи. У такой системы есть и удобный побочный эффект: благодаря большому количеству света в камере можно использовать очень высокую скорость затвора, получая идеально чёткие изображения деталей даже при быстром перемещении по конвейеру.

Распознаватель объектов

YOLO очень крута! Но мне не нужны все её функции.

К счастью, я мог избежать сложного решения на основе ИИ, воспользовавшись «олдскульными» техниками машинного зрения. Первая техника — это вычитание фона (background subtraction), которое пытается выделить все изменившиеся части изображения. В моём случае единственное, что движется в поле зрения камеры — это детали LEGO. (Разумеется, лента тоже движется, но поскольку она имеет однородный цвет, камере она кажется неподвижной). Отделим эти детали LEGO от фона, и половина задачи решена.

Чтобы вычитание фона работало, объекты переднего плана должны значительно отличаться от фона. Детали LEGO имеют широкий диапазон цветов, поэтому мне нужно было очень тщательно выбирать цвет фона, чтобы он был как можно более далёк от цветов LEGO. Именно поэтому лента под камерой изготовлена из бумаги — она не только должна быть очень однородной, но и не может состоять из LEGO, иначе будет иметь цвет одной из деталей, которые мне нужно распознавать! Я выбрал бледно-розовый, но подойдёт и любой другой пастельный цвет, непохожий на обычные цвета LEGO.

В чудесной библиотеке OpenCV уже есть несколько алгоритмов для вычитания фона. Вычитатель фонов MOG2 — самый сложный из них, и при этом он работает невероятно быстро даже на raspberry pi. Однако подача кадров видео напрямую в MOG2 работает не совсем хорошо. Светло-серые и белые фигуры слишком близки к яркости бледного фона и теряются на нём. Мне нужно было придумать способ, чтобы отчётливей отделить ленту от находящихся на ней деталей, приказав вычитателю фона внимательнее смотреть на цвет, а не на яркость. Для этого мне достаточно было увеличить насыщенность изображений перед передачей его в вычитатель фонов. Результаты при этом значительно улучшились.

После вычитания фона мне нужно было использовать морфологические операции, чтобы избавиться от как можно большего количества шума. Для поиска контуров белых областей можно использовать функцию findContours() библиотеки OpenCV. Применив различные эвристики для отклонения контуров, содержащих шум, можно легко преобразовать эти контуры в готовые ограничивающие прямоугольники.


Нейронная сеть — прожорливое существо. Для получения наилучших результатов при классификации ей требуются изображения максимального разрешения и в как можно больших количествах. Это значит, что мне нужно снимать их с очень высокой частотой кадров, сохраняя при этом качество и разрешение изображения. Я должен выжать из камеры и GPU Raspberry PI максимум возможного.

В очень подробной документации к picamera написано, что чип камеры V2 может выдавать изображения размером 1280x720 пикселей с максимальной частотой 90 кадров в секунду. Это невероятный объём данных, и хотя камера может его генерировать, это не означает, что с ним справится компьютер. Если бы я обрабатывал сырые 24-битные RGB-изображения, то мне пришлось бы передавать данные со скоростью примерно 237 МБ/с, а это слишком много и для бедного GPU компьютера Pi, и для SDRAM. Даже при использовании ускоренной с помощью GPU компрессии в JPEG частоты 90fps достичь невозможно.

Камера Raspberry Pi способна выводить сырое неотфильтрованное YUV-изображение. Хотя с ним работать сложнее, чем с RGB, у YUV на самом деле есть множество удобных свойств. Самое важное из них заключается в том, что оно хранит всего 12 бит на пиксель (у RGB это 24 бита).

Каждые четыре байта Y имеют один байт U и один байт V, то есть на пиксель приходится 1,5 байта.

Это означает, что по сравнению с RGB-кадрами я могу обрабатывать в два раза больше YUV-кадров, и это ещё не считая дополнительного времени, которое GPU экономит на преобразовании в RGB-изображение.

Однако такой подход накладывает уникальные ограничения на процесс обработки. На большинство операций с полноразмерным кадром видео будет тратиться чрезвычайно много памяти и ресурсов ЦП. В пределах моих строгих временных ограничений невозможно даже декодировать полноэкранный YUV-кадр.

К счастью, мне и не нужно обрабатывать кадр целиком! Для распознавания объектов ограничивающие прямоугольники не обязаны быть точными, достаточно приблизительной точности, поэтому весь процесс распознавания объектов можно выполнять с гораздо меньшим кадром. Операция уменьшения масштаба не обязана учитывать все пиксели полноразмерного кадра, поэтому кадры можно уменьшать очень быстро и без затрат. Затем масштаб получившихся ограничивающих прямоугольников снова увеличивается и используется для вырезания объектов из полноразмерного YUV-кадра. Благодаря этому мне не нужно декодировать или иным образом обрабатывать весь кадр высокого разрешения.

К счастью, благодаря способу хранения этого формата YUV (см. выше) очень легко реализовать быстрые операции обрезки и уменьшения масштаба, работающие непосредственно с форматом YUV. Кроме того, весь процесс без особых проблем можно распараллелить на четыре ядра Pi. Однако я выяснил, что не все ядра используются в полную силу, и это говорит нам, что «бутылочным горлышком» по-прежнему остаётся пропускная способность памяти. Но даже при этом мне удалось на практике достичь 70-80FPS. Более глубокий анализ использования памяти возможно помог бы ещё больше ускорить работу.

Если вам хочется узнать больше о проекте, то прочитайте мою предыдущую статью «Как я создал более 100 тысяч размеченных изображений LEGO для обучения».

Программа дает возможность составлять новые фигурки из имеющихся деталей. Приложение анализирует конструкторы, которые пользователь уже приобрел, и таким образом выясняет, какие кубики есть в наличии. На основе полученных данных приложение представит несколько инструкций по сборке новых моделей: среди них есть дома, автомобили, животные, общественные участки и многое другое.

Чтобы загрузить сведения в Brickit, можно использовать камеру собственного смартфона. Пользователь может высыпать весь конструктор на пол, разместись телефон на необходимом расстоянии и просканировать кучки деталей. Программа самостоятельно распознает блоки и подберет подходящие объекты для сборки. Чем больше деталей есть у сборщика, тем больше комбинаций приложение сможет составить.

Инструкции к моделям представлены в классическом LEGO-стиле. Сначала пользователь должен взять базовые детали, а затем поочередно присоединять к основе остальные блоки. Инструкции расписаны ярко и подробно: каждый буклет содержит информацию о количество необходимых деталей, а также указывает, если какой-либо детали недостает. Все понравившиеся инструкции можно объединить в коллекцию для быстрого доступа к ним.

Готовый результат пользователь может сфотографировать напрямую через приложение, а затем поделиться изображением с друзьями. Завершенные работы сохраняются в отдельной папке. Разработчики Brickit предупреждают, что их продукт не является официальным приложением от LEGO, а представляет собой фанатскую программу, которая, тем не менее, регулярно улучшается и обновляется.

Аналоги для Андроид

На данный момент инструкции Brickit доступны только пользователям iOS-устройств. Любители Android-смартфонов могут попробовать в качестве аналога другое приложение: Инструкции по сборке LEGO – Ваш помощник в сборке.

Инструкции по сборке LEGO – Ваш помощник в сборке

Инструкции по сборке LEGO скриншот 1
Инструкции по сборке LEGO скриншот 2

Программа идеально подходит для всех фанатов LEGO-строительства. С помощью этого приложения пользователи могут просматривать инструкции, собирать виртуальные объекты и проектировать 3D-модели. Среди множества представленных руководств каждый строитель сможет найти подходящий буклет: приложение станет незаменимым, если инструкция испорчена или потеряна.

Пользователи, которые воздерживаются от приобретения реальных конструкторов, могут воспользоваться функцией Instructions PLUS. Она позволяет просматривать реальный процесс сборки в формате 3D, а получившуюся модель можно крутить и масштабировать. Понравившиеся объекты можно сохранить в избранном, а также добавить в коллекцию наборов. Каждая модель содержит подробный информационный блок, где пользователь найдет все необходимые сведения о количестве деталей, дате изготовления и возрастном цензе.

(4,75 / голосов - 222)

LEGO Digital Designer - программа для конструирования из блоков ЛЕГО

LEGO Digital Designer — программа для конструирования из блоков ЛЕГО

LEGO Digital Designer (ЛЕГО Дижитал Дизайнер) — бесплатная программа для виртуального конструирования на ПК из стандартных блоков входящих в состав конструкторов LEGO.

Picture YaBrowser

Основные возможности программы ЛЕГО Дижитал Дизайнер

Программа позволяет создавать и просматривать трехмерные модели из стандартных блоков всемирно популярных конструкторов LEGO. После создания модели, приложение может в автоматическом режиме сгенерировать схему сборки спроектированного объекта с пошаговыми иллюстрациями и перечнем необходимых деталей на текущем шаге сборки.

LDD - последовательность сборки конструкции

LDD — последовательность сборки конструкции

В приложении LDD предусмотрена возможность экспорта сгенерированной схемы сборки в формат HTML, для последующего просмотра в любом веб-браузере. При необходимости, можно открытую в браузере инструкцию распечатать на любом подключенном принтере.

ЛЕГО Дижитал Дизайнер - схема сборки в формате HTML

ЛЕГО Дижитал Дизайнер — схема сборки в формате HTML

Как и в стандартных наборах конструкторов ЛЕГО, схема содержит подробные изображения каждого этапа сборки узлов и деталей используемых для текущего шага.

ЛЕГО Дижитал Дизайнер - перечень необходимых деталей для сборки

ЛЕГО Дижитал Дизайнер — перечень необходимых деталей для сборки

В HTML версии инструкции на последней странице размещен полный перечень необходимых для сборки деталей с указанием количества и их изображением.

Читайте также: