Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Segmentatsia_izobrazheny_na_osnove_konturnogo_a...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.73 Mб
Скачать
  1. Алгоритм максимизации контуров в окрестности точки.

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

Рис 2. Исходное изображение

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

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

Функция ConSquareColorDif (нахождения оптимальной яркости) начинается с цикла, в котором изображение бинаризуется каждый раз со своим порогом яркости. Цикл начинается с нулевого значения яркости и следует с шагом, заданным персонально. Запускается цикл по вертикали и горизонтали, для прохождения каждой точки изображения. Внутри него запускается алгоритм, проходящий прямоугольником вокруг точки, начинающийся в левом верхнем углу. По мере прохождения по часовой стрелке каждый следующий пиксель сравнивается по цвету с предыдущим и, каждый раз при разнице цветов, локальная переменная temp добавляет к себе единицу[1.3].

Как промежуточный результат программа выдает изображение в серых тонах, каждый пиксель которого закрашивается в соответствии с его оптимальной яркостью. В данном случае использовался шаг по яркости 5, а прямоугольная окрестность точки бралась как 1/20 от всего изображения (Рис 3)

Рис 3 Промежуточный результат при параметрах 5, 20, 20.

При бинаризации происходит появление шумов, полученных в результате появления границ контуров в окрестностях точек. Такой результат порождает большое количество лишних контуров, которые в дальнейшем будут распознаны алгоритмом как некая текстура (Рис 4). Во избежание этого используется функция squarBinar, «сглаживающая» изображение.

Рис 4 Бинаризация по яркостям, полученная в ConSquareColorDif

Функция avSquare принимает в себя трехмерный массив, полученный из функции ConSquareColorDif, а также шаг по горизонтали и вертикали, пропорционально отображающий область сглаживания относительно всего изображения. Запускается двойной цикл для прогонки по всем значениям пикселя. Внутри этого цикла запускается двойной цикл, высчитывающий сумму оптимальных яркостей всех пикселей, попадающих в заданную окрестность точки. Все точки, вылезающие (выходящие) за пределы изображения приравниваются к граничным. После второго двойного цикла сумма всех яркостей делится на количество точек, входящее в область, после чего функция возвращает трехмерный массив, первые две размерности которого отвечают за положение пикселя на изображении, а третья в нуле возвращает оптимальную среднюю яркость, а в единице – среднее арифметическое удвоенного количества контуров, попавших в эту точку[2].

Как промежуточный результат программа выдает изображение в серых тонах, каждый пиксель которого закрашивается в соответствии с его средней оптимальной яркостью. В данном случае прямоугольная окрестность точки бралась как 1/20 от всего изображения (Рис 4)

Рис 4 Промежуточный результат avSquare при параметрах 20, 20.

Завершающей стадией бинаризации является функция squarBinar, принимающая в себя одномерный массив пикселей изображения и трехмерный массив пикселей, первые 2 размерности которого отвечают за положение пикселя на изображении, а третья в 0 возвращает пороговую яркость для выбранного пикселя. Запускается двойной цикл по точкам изображения, бинаризующий его с заданным порогом яркости. Функция возвращает одномерный массив черно-белых пикселей[3].

Результат как бинаризованое изображение выводится на экран и готово к дальнейшему выделению контуров (Рис 5).

Рис 5 Бинаризованое изображение

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]