Skip to content

Курсовой проект по предмету ИТ. Программа предназначена для распознавания показаний стрелочных приборов по фотографии

Notifications You must be signed in to change notification settings

Llahainur/instrument-data-reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

instrument-data-reader

Курсовой проект по предмету ИТ. Программа предназначена для распознавания показаний стрелочных приборов по фотографии

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

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

p5 контуры

Мной был использован язык программирования Python версии 3.6, виртуальное окружение pip и Pycharm IDE. Использовались библиотеки питон opencv2, numpy, math, os, tkinter последих версий.

Было разработано 2 метода решения задачи, один показал крайне низкую точность срабатывания, тем не менее, его я тоже приведу в работе. Метод поиска по цвету Данный метод заключается в поиске на изображении фигуры (стрелочки) определенного цвета, отличного от цвета корпуса. Т.к на большинстве приборов они имеют красный цвет, я использовал его. Алгоритм:

  1. Импорт изображения и преобразование его в цветовую модель HSV (opencv cvtColor)
  2. Применение цветового фильтра по нужному цвету (opencv threshold)
  3. Поиск контуров на полученном изображении (opencv findContours)
  4. Поиск прямоугольных контуров (opencv minArearect)
  5. Очистка помех, стрелочка – самый большой
  6. Поиск угла наклона большей стороны прямоугольника
  7. Если прямоугольник расположен выше центра фотографии, то угол (0, 180), если ниже, (180, 360). Т.к Принадлежность к верхней или нижней полуплоскости определяется дополнительно, если нижняя, то к углу прибавляется 180 гр.
  8. Вывод угла
Минусом метода является необходимость наличия стрелочки цвета отличающегося от цвета корпуса. В работе представлен функцией sq_method Метод моментов Этот метод имеет очень низкую точность и в реальном проекте использоваться сможет только после доработки. Я обзорно опишу его алгоритм.
  1. Импорт изображения, его преобразование в черно-белое, размытие методом Гаусса и удаление помех. Сложно подобрать нужные коэффициенты, такие, чтобы на изображении остался виден корпус и стрелочка прибора и были удалены все лишние детали. (opencv GaussianBlur, threshold) в работе – функции get_ready и get_ready2
  2. Изображение обрезается, так, чтобы остался только центр прибора с стрелкой, а корпус был бы не виден.
  3. Вычисляются цветовые моменты (opencv moments)
  4. Из них можно найти тангенс угла наклона стрелочки и, соответственно, сам угол.
На практике, метод нахождения угла из цветовых моментов имеет низкую точность, недостаточную для работы с приборами, и коэффициенты гаусса подбирать – задача сложная, приходится выполнять её вручную, сто нивелирует смысл программы.

About

Курсовой проект по предмету ИТ. Программа предназначена для распознавания показаний стрелочных приборов по фотографии

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages