Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
проект детектор листьев- образец.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
277.28 Кб
Скачать
    1. Ход работы

      1. Реализация дерева вариантов

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

Рисунок 4 – Дерево вариантов

      1. Работа с изображением

Для различения параметров листа не нужно цветное изображение, поэтому прежде чем запускать разработанные алгоритмы на изображении листа, необходимо перевести его в черно-белую картинку (рисунок 5) и записать результат в матрицу, где 0 – черный цвет, а 1 - белый.

Чтобы получить изображение, как на Рисунке 5, программа выполняет с изображением следующие функции:

  1. Кластеризация (Приложение 1, пункт 1).

Кластеризация — это задача разбиения множества объектов на группы, называемые кластерами. Внутри каждой группы должны оказаться «похожие» объекты, а объекты разных группы должны быть как можно более отличны.

Программа выполняет бинарную кластеризацию изображения по границе яркости 0,775.

Рисунок 5 – Преобразование изображения, кластеризация

  1. Размер изображения (Приложение 1, пункт 2).

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

  1. Чистка изображения (Приложение 1, пункт 3).

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

Аналогичный алгоритм повторяется для соседей на расстоянии 5 и 3 пикселя для увеличения точности и исключения вероятности незакрашивания неправильных пикселей. Затем этот алгоритм повторяется по столбцам.

Таким образом белые пиксели на белом фоне заменяются на черные и наоборот.

  1. Отсечение черенка (Приложение 1, пункт 4).

От середины изображения вниз построчно проводится следующий алгоритм: Для каждого черного пикселя проверяется цвет его соседей через 1/30 от ширины изображения. Если оба соседних пикселя белого цвета, то проверяемый закрашивается белым.

Таким образом, от листа убирается черенок.

      1. Разработка алгоритмов

Для проверки каждого параметра необходимо было разработать алгоритм, который впоследствии будет реализован в программе на языке Matlab.

  1. Отношение длины к ширине.

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

Аналогичным образом находится ширина листа (программа проверяет по столбцам). Для нахождения отношения длины к ширине, нужно поделить первое на второе.

  1. Количество крайних точек.

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

Пиксель является крайним, если у квадрата 61*61, где она центральная, количество черных пикселей на периметре меньше 58.

  1. Угол при вершине.

Программа берет вершину листа (самый первый черный пиксель при по- строчной проверке изображения), опускается вертикально вниз на 1/8 от всей

длины листа (), смотрит строчку основания до краев листа, тем самым полу- чая основания и . Строится два прямоугольных прямоугольника (рисунок

6), у которых находятся углы при вершинах через их тангенсы. Складывается сумма двух углов и получатся величина угла при вершине.

Рисунок 6 – Угол при вершине

Искомый угол: γ = α + β = arctg(a / c) + arctg(b / c)

  1. Наличие/отсутствие зубчиков.

Для определения зубчика программы проверяет картинку по столбцам. Если в столбце есть 1, 2, 3 или 4 черных пикселя, у которых сверху и снизу хотя бы по три белых пикселя (рисунок 7), то данный участок называется зубчиком.

Рисунок 7 – Зубчики