Смекни!
smekni.com

Система автоматизированного анализа пространственной структуры изображений Подсистема центроидной (стр. 5 из 14)

где 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

Вычисление кривизны

Cf – центр фильтра; P1,P2 – точки линии, попавшие в фильтр;

r – радиус фильтра; h – смещение центра масс от центра фильтра;

l - расстояние от центра масс до точки пересечения линии рисунка и фильтра; M – центр масс; О – центр окружности на изображении;

R – радиус окружности на изображении;

Рис.2.2

Рассмотрим треугольник ΔСfMP2 .Из соотношения гипотенузы и катетов в прямоугольных треугольниках, следует:

(2.9)

Из прямоугольного треугольника ΔOMP2 следует:

(2.10)

Из (2.9) выразим l2 , получим:

(2.11)

Подставив в (2.10), получим:

(2.12)

Раскроем скобки:

(2.13)

Для получения h, сделаем несколько преобразований:

, (2.14)

, (2.15)

, (2.16)

Нормируем h по r :

(2.17)

Дифференцируем (2.17) по r /10/ :

(2.18)

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

Окружность. При обработке фильтрами различных радиусов (рис 2.3), кривизна остается постоянной (рис.2.4), т.к. радиус окружности – величина постоянная.


Окружность

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. Результаты решения

В результате реализации алгоритма формируется массив координат точек кольцевого фильтра. При этом центр координат совпадает с центром фильтра.

2.2.4. Алгоритм решения

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. Назначение и характеристика алгоритма

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