где N – количество пикселов в фильтре,
p(i, j) – “вес” пиксела.
Рассчитываются вес пикселей по оси Ox:
, (2.3)и вес по оси Oy:
, (2.4)Смещение по оси Оx к центру “тяжести” пикселей, относительно текущей точки:
, (2.5)Смещение по оси Оy к центру “тяжести” пикселей, относительно текущей точки:
, (2.6)Координаты центра тяжести P(i, j):
, (2.7)
, (2.8)
где u,v – координаты центра фильтра.
Математическое описание алгоритма вычисления кривизны
Кривизна вычисляется для точки, принадлежащей линии. Поэтому необходимое условие выполнения алгоритма – совпадение центра фильтра и точки на линии. Геометрическое расположение фильтра и линии показано на рис. 2.2
Вычисление кривизны
Окружность | |
a) обработка фильтром большого радиуса; | б) обработка фильтром маленького радиуса; |
Рис.2.3 |
График зависимости кривизны от радиуса фильтра для окружности
Рис.2.4
Кривая. При обработке фильтрами различных радиусов (рис 2.5), кривизна постоянно меняется (рис.2.6), т.к. изменяется радиус окружности, которую можно вписать между центром фильтра и точками линии, попавшими в фильтр.
Угол. При обработке фильтрами различных радиусов (рис 2.7), кривизна меняется пропорционально изменению радиуса фильтра (рис.2.8), т.к. пропорционально изменяется радиус окружности, которую можно вписать между центром фильтра и точками линии, попавшими в фильтр.
Кривая | |
a) обработка фильтром большого радиуса; | б) обработка фильтром маленького радиуса; |
Рис.2.5 |
График зависимости кривизны от радиуса фильтра для кривой
Рис.2.6
Угол | |
a) обработка фильтром большого радиуса; | б) обработка фильтром маленького радиуса; |
Рис.2.7 |
Рис.2.8
2.2. Описание алгоритма построения кольцевого фильтра
2.2.1. Назначение и характеристика алгоритма
Алгоритм описывает метод вычисления координат кольцевого фильтра. Математическое описание алгоритма приведено в подразделе 2.1.4.
2.2.2. Используемая информация
В алгоритме используются значения внешнего и внутреннего радиуса кольца.
2.2.3. Результаты решения
В результате реализации алгоритма формируется массив координат точек кольцевого фильтра. При этом центр координат совпадает с центром фильтра.
1. i=-MASK_SIZE;
2. j=MASK_SIZE;
3. s=sqrt(i*i+j*j);
4. Если ((s<=outsideR)&&(s>=insideR)), то к.п.5, иначе переход к п.7
5. FltArr[FltArr_index].x=i;
6. FltArr[FltArr_index++].y=j;
7. j--;
8. Если j>=-MASK_SIZE, то переход к п.3
9. i++;
10. Если i<=MASK_SIZE, то переход к п.2
11. Конец
2.2.5. Список условных обозначений
Условные обозначения, используемые в описании алгоритма, приведены в табл. 2.1.
Таблица 2.1
Список условных обозначений
Обозначение | Расшифровка |
MASK_SIZE | Радиус максимального фильтра в пикселях |
i, j | Координаты текущего пиксела |
FltArr | Массив координат |
FltArr_index | Индекс текущего элемента в массиве FltArr |
s | Расстояние от центра фильтра до текущего пиксела |
2.3. Описание алгоритма вычисления центра масс
2.3.1. Назначение и характеристика алгоритма
Алгоритм описывает процесс вычисления центра масс относительно центра фильтра. Математическое описание алгоритма приведено в подразделе 2.1.4. В результате решения алгоритма вычисляются координаты центра масс.
2.3.2. Алгоритм решения
1. M=0,Wx=0,Wy=0;
2. Cx=0,Cy=0; k=0;
3. Если (k>=FltArr_index), то переход к п.8
4. M=M+ImArr[CF.x+FltArr[k].x][CF.y+FltArr[k].y:
5. Wx=Wx+
+(CF.x+FltArr[k].x)*ImArr[CF.x+FltArr[k].x][CF.y+FltArr[k].y];
6. Wy=Wy+
+(CF.y+FltArr[k].y)*ImArr[CF.x+FltArr[k].x][CF.y+FltArr[k].y];
7. k++; переход к п.3
8. M=M/255;
9. Wx=Wx/255;
10. Wy=Wy/255;
11. Если (M==0), то переход к п.14
12. Cx=Wx/M;
13. Cy=Wy/M;
14. Конец
2.3.3. Список условных обозначений
Условные обозначения, используемые в описании алгоритма, приведены в табл. 2.2.
Таблица 2.2
Список условных обозначений
Обозначение | Расшифровка |
M | Общая масса пикселей попавших в фильтр |
Wx, Wy | Вес пикселей по осям Ox и Oy соответственно. |
FltArr_index | Количество точек фильтра |
k | Порядковый номер точки фильтра |
FltArr | Массив координат точек фильтра |
ImArr | Массив исходного изображения |
CF | Точка, относительно которой вычисляется центр масс |
Cx, Cy | Координаты центра масс |
2.4. Описание алгоритма вычисления кривизны
2.4.1. Назначение и характеристика алгоритма
Алгоритм описывает вычисления кривизны линий на изображении с использованием локального метода. В алгоритме используются кольцевой фильтр. В результате решения алгоритма вычисляется кривизна в центре фильтра, находящегося на исследуемой линии.