Описание алгоритма построения кольцевого фильтра

Назначение и характеристика алгоритма

Алгоритм описывает метод вычисления координат кольцевого фильтра. Математическое описание алгоритма приведено в подразделе 2.1.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.1.

 

Таблица 2.1

Список условных обозначений

Обозначение Расшифровка
MASK_SIZE Радиус максимального фильтра в пикселях
i, j Координаты текущего пиксела
FltArr Массив координат
FltArr_index Индекс текущего элемента в массиве FltArr
s Расстояние от центра фильтра до текущего пиксела

 

Описание алгоритма вычисления центра масс

Назначение и характеристика алгоритма

Алгоритм описывает процесс вычисления центра масс относительно центра фильтра. Математическое описание алгоритма приведено в подразделе 2.1.4. В результате решения алгоритма вычисляются координаты центра масс.  

 

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

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.2.

 

Таблица 2.2

Список условных обозначений

Обозначение Расшифровка
M Общая масса пикселей попавших в фильтр
Wx, Wy Вес пикселей по осям Ox и Oy соответственно.
FltArr_index Количество точек фильтра
k Порядковый номер точки фильтра
FltArr Массив координат точек фильтра
ImArr Массив исходного изображения
CF Точка, относительно которой вычисляется центр масс
Cx, Cy Координаты центра масс

 

Описание алгоритма вычисления кривизны

Назначение и характеристика алгоритма

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



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

1. Если (CF.mass==0), то к п.2, иначе переход к п.3

2.  С= 140; переход к п.6 

3.  P=CentrMass(CF);

4.  h=sqrt((P.x-CF.x)^2 + (P.y-CF.y)^2);

5.  C=(h / insideR^2+0.005)*100;

6.  Конец;

 

Список условных обозначений

Условные обозначения, используемые в описании алгоритма, приведены в табл. 2.3.

 

Таблица 2.3

Список условных обозначений

 

Обозначение Расшифровка
CF Центр фильтра (поле mass – масса пиксела, x,y – соответственно, координаты)
С Кривизна
CentrMass Функция, вычисляющая центр масс
P Центр масс
h Смещение центра масс от центра фильтра
insideR Внутренний радиус кольца
sqrt Функция, вычисляющая корень квадратный
^ Операция возведения в степень

Описание алгоритма обработки изображения

Назначение и характеристика алгоритма

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



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

1. Name = FormNewFileName(OpenDialog1->FileName);

2. outIm=fopen(Name,"wb");

3. fwrite(&Width,sizeof(Width),1, outIm);

4. fwrite(&Height,sizeof(Height),1, outIm);

5. RingFiltrPoint(insideR,outsideR);

6. i=outsideR;

7. j=outsideR;

8. CrArr[i][j]=CentroidRelax(i,j,insideR,outsideR);

9. j++;

10. Если j<Height-outsideR, то переход к п. 8

11. i++;

12. Если i< Width-outsideR, то переход к п. 7

13. i=0;

14. j=0;

15. fwrite(&CrArr[i][j],sizeof(CrArr[i][j]),1, outIm);

16. j++;

17. Если j<Height, то переход к п. 15

18. i++;

19. Если i<Width, то переход к п. 14

20. fclose(outIm);

21. Конец;

 



Список условных обозначений

Условные обозначения, используемые в описании алгоритма, приведены в табл. 2.4.

 

Таблица 2.4

Список условных обозначений

Обозначение Расшифровка
outIm Выходной файловый поток
Name Имя выходного файла
FormNewFileName Функция, формирующая новое имя выходного файла
OpenDialog1-> FileName Имя файла, открытого с помощью диалога “Открыть”
fopen Функция открытия файла
outsideR Внешний радиус кольца
insideR Внутренний радиус кольца
RingFiltrPoint Функция вычисления точек фильтра
Обозначение Расшифровка
CrArr Массив кривизны линий
CentroidRelax Функция вычисления кривизны
fwrite Функция записи в файл
sizeof Функция вычисления размера переменной
fclose Функция закрытия файла

 

Описание программы «Центроидная релаксация»

Вводная часть

Программа «Центроидная релаксация» применяется для автоматизации процесса структурного анализа графического изображения. При этом программа использует человеко-машинный интерфейс: человек выбирает, чем оперировать и параметры обработки данных, а программа выполняет все необходимые расчеты.

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

Программа имеет обозначение Relax, разработана в среде программирования Borland C++ Builder 6.0.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: