Skip to content

Laboratory work within the course "Signal processing and interpretation"

Notifications You must be signed in to change notification settings

ViktorOneLove/Intelligent-Placer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Intelligent-Placer

Лабораторная работа по курсу "Signal processing and interpretation"

Постановка задачи

Общее описание

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

Ввод \ вывод

Ввод: картинка предметов с многоугольником в формате jpg без сжатия

Вывод: ответ 1 \ 0 в текстовый файл answer_<имя поданной картинки на вход>.txt

Требования

Общие к фотографиям

  • Фотографии сделаны с одного устройства
  • При одинаковом освещении
  • Предметы и поверхность должны быть равномерно и хорошо освещены - отсутствие пересвеченных и серо-черных областей
  • Фотография без цветовой коррекции
  • Без сжатия
  • На фотографии нет лишних предметов, кроме тех, которые заранее были известны
  • Фотография сделана под прямым углом к нормали поверхности (возможны небольшие отклонения +- 5°)
  • Листы с нарисованным многоугольником и предметы не пересекаются и не имеют общих границ (расстояние не менее 2 см между границ)
  • Края листов бумаги на фото хорошо видны и не сливаются с фоном

К поверхности

  • Горизонтальная (без выпуклостей и впадин)
  • Однородная (без сильно выделяющихся объектов: узоров, пятен)
  • Одна для всех фотографий

К предметам на поверхности

  • Предметы располагаются на поверхности
  • Предметы хорошо различимы с поверхностью (границы предметов не сливаются с ней)
  • Не перекрывают друг друга
  • Не имеют общих границ (расстояние не менее 1 см между границ)
  • На фото располагаются целиком (все границы видны)
  • Тень от предметов не должна быть слишком интенсивной. Различимость предметов не должна нарушаться (см. примеры входных фотографий)

К многоугольнику

  • Многоугольник нарисован на отдельном белом чистом листе бумаги
  • Лист с нарисованным многоугольником располагается слева от предметов
  • Многоугольник задается фигурой, нарисованной черным маркером
  • Толщина нарисованной линии не менее 5мм и не более 10мм
  • Расстояние между линиями \ вершинами многоугольника и границами листа должно быть не менее 1 см

Датасет

Датасет

Алгоритм

  • На изображении находим контуры бумаги и маску многоугольника на ней
    • Для нахождения маски многоугольника находим его контуры и минимальный содержащий их прямоугольник. Значения внутри контуров и сами контуры заполняем значением False, область вне многоугольника - True
  • Находим область с объектами - область расположенная справа от контуров бумаги
  • Находим общую маску всех предметов на изображении
    • Распознаем объекты от фона, используя его цветовые координаты в hsv представлении
    • Избавляемся от артефактов - шумов и полостей внутри объектов
    • Используя бинарную морфологию получаем маску всех предметов на изображении
  • Находим маску каждого отдельного предмета и его площадь
    • Находим области связанных пикселей на найденной раннее маске
    • Отделяем каждую такую область от общей маски - находим маску каждого отдельного объекта. Маска каждого предмета представлена значениями True, область вне объекта - False
    • Обрезаем маску предмета минимальным содержащим ее прямоугольником
    • Находим площадь маски предмета как количество точек со значением True
  • Параллельным переносом каждого объекта убеждаемся, что весь набор объектов (не) поместится в области многоугольника
    • Сортируем маски объектов по их площади в убывающем порядке
    • Пытаемся последовательно разместить каждый объект в области многоугольника
      • Маска многоугольника имеет значения False, область вне маски - True
      • Маска объекта имеет значения True, область вне объекта - False
      • Используя битовую операцию - AND находим области предметов, которые выходят за маску многоугольника или накладываются на уже расположенные объекты. Если площадь таких областей равна нулю - располагаем предмет
      • Используя для этого битовую операцию - XOR

About

Laboratory work within the course "Signal processing and interpretation"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published