Реферат на тему "Система автоматизированного анализа пространственной структуры изображений Подсистема центроидной релаксации"




Реферат на тему

текст обсуждение файлы править категориядобавить материалпродать работу




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

скачать

Найти другие подобные рефераты.

Диплом *
Размер: 0.85 мб.
Язык: русский
Разместил (а): Дмитрий
Предыдущая страница 1 2 3 4 5 6 7 8 9 Следующая страница

добавить материал

   // масса пикселей по оси Ox
   Wx=Wx/255;
   // масса пикселей по оси Oy
   Wy=Wy/255;
   if (M!=0)
    {
     Cx=(int)Wx/M + 0.5;
     Cy=Wy/M;
     }
   //центр масс
   P.x=Cx;
   P.y=Cy;
  return P;
}
//--------------------------------------------------------------------------
//   Вычисление кривизны в точке i,j
//--------------------------------------------------------------------------
int CentroidRelax(int i,int j,int insideR,int outsideR)    
{ COORDINATE P;
  double h;
  int C;
  PIXEL CF;
  CF.mass=FormParam->ImArr[i][j];
  if ((CF.mass==0)||(CF.mass==140))
      return 140;  // точка не на линии  - фон цвет серый
  else
    {
      CF.x=i;
      CF.y=j;
      P=CentrMass(CF);//определить координаты центра масс
      // определить длину вектора h
      h=sqrt(pow(P.x-CF.x,2.0)+pow(P.y-CF.y,2.0));
      // вычислить кривизну для текущей точки изображения
      //*100, потому что кривизна находится в промежутке  [0;1)
      C=(h/pow(insideR,2.0)+0.005)*100;
      //C=h/insideR+0.5;
      // сохранить в массив
     }
  return C;
}
//--------------------------------------------------------------------------
//   Вычисление точек фильтра
//--------------------------------------------------------------------------
void  RingFiltrPoint(int insideR,int outsideR)
{
  float s;
  ClearFltArr();
  for(int i=-MASK_SIZE;i<=MASK_SIZE;i++)
  {
    for(int j=MASK_SIZE;j>=-MASK_SIZE;j--)
    {
     s=sqrt(i*i+j*j);
     if ((s<=outsideR)&&(s>=insideR))
       {
        FltArr[FltArr_index].x=i;
        FltArr[FltArr_index++].y=j;
       }
    } //for
  } //for
}
//--------------------------------------------------------------------------
//   Очистка массива точек фильтра
//--------------------------------------------------------------------------
void ClearFltArr(void)
{
 FltArr_index=0;
 for(int i=0;i<=MASK_SIZE*MASK_SIZE;i++)
   {
     FltArr[i].x=0;
     FltArr[i].y=0;
   }
}
//--------------------------------------------------------------------------
//   Обработка изображения
//--------------------------------------------------------------------------
void Imaging(int insideR,int outsideR)
{
  int C,index;
  string Name;
  AnsiString FileSafeName;
  FILE *outIm;
  // формирование имени файла
  index=AnsiPos(ExtractFileExt(FormParam->OpenDialog1->FileName),
                       ExtractFileName(FormParam->OpenDialog1->FileName));
  Name = ExtractFileName(FormParam->OpenDialog1->FileName).c_str();
  Name = Name.substr(0,index-1);
  Name = Name.substr(0,4)+"_" ; //вырезать первые 4 символа
  FileSafeName=StrPas(Name.c_str()) + IntToStr(outsideR)+"_"+ IntToStr(insideR)+".rlx";
  outIm=fopen(FileSafeName.c_str(),"wb"); // открываем бинарный файл
  fwrite(&FormParam->Width,sizeof(FormParam->Width),1, outIm);//ширина изображения
  fwrite(&FormParam->Height,sizeof(FormParam->Height),1, outIm);//ширина изображения
  // вычисляем точки фильтра
  RingFiltrPoint(insideR,outsideR);
  for (int i=outsideR;i<FormParam->Width-outsideR;i++)
   {
    for (int j=outsideR;j<FormParam->Height-outsideR;j++)
     {
      FormParam->CrArr[i][j]=CentroidRelax(i,j,insideR,outsideR);
      FormParam->bmp->Canvas->Pixels[i][FormParam->Height-outsideR-j]=FormParam->CrArr[i][j]; // debug
      }
   }
  // сохранение результатов в файл
  for (int i=0;i<FormParam->Width;i++)
   {
    for (int j=0;j<FormParam->Height;j++)
     {
     fwrite(&FormParam->CrArr[i][j],sizeof(FormParam->CrArr[i][j]),1, outIm);//
     }
   }
   fclose(outIm);
}
П.1.5 Файл «CentriodRelax.h»
//---------------------------------------------------------------------------
#ifndef CentroidRelaxH
#define CentroidRelaxH
#include <Math.h>
#include <fstream.h>
#include <ExtCtrls.hpp>
typedef struct
{
  int mass;
  int x;
  int y;
} PIXEL;
typedef struct
{
  int x;
  int y;
} COORDINATE;
//function
//int CentroidRelax(PIXEL CF);
int CentroidRelax(int i,int j,int insideR,int outsideR) ;
void Imaging(int insideR,int outsideR);
#endif
П.1.6. Файл «Seria.cpp»
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "seria.h"
#include "ParamCentroid.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormSeria *FormSeria;
//---------------------------------------------------------------------------
__fastcall TFormSeria::TFormSeria(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
//  обработка нажатия кнопки -ОК
//---------------------------------------------------------------------------
void __fastcall TFormSeria::Button1Click(TObject *Sender)
{
  if (seria)
    {
     FormParam->exp=StrToInt(EditExp->Text);
     FormParam->step=StrToInt(EditStep->Text);
     }
  FormSeria->Hide();
}
//---------------------------------------------------------------------------
//  обработка CheckBox1 - разрешить серию вычислений
//---------------------------------------------------------------------------
void __fastcall TFormSeria::CheckBox1Click(TObject *Sender)
{
 if (CheckBox1->Checked)
   {
    seria=true;
    this->Label1->Enabled=true;
    this->Label2->Enabled=true;
    this->UpDownExp->Enabled=true;
    this->EditExp->Enabled=true;
    this->UpDownStep->Enabled=true;
    this->EditStep->Enabled=true;
    }
 else
   {
    seria=false;
    this->Label1->Enabled=false;
    this->Label2->Enabled=false;
    this->UpDownExp->Enabled=false;
    this->EditExp->Enabled=false;
    this->UpDownStep->Enabled=false;
    this->EditStep->Enabled=false;
    FormParam->exp=0;
    FormParam->step=0;
    }
}
//---------------------------------------------------------------------------
//  Создание формы
//---------------------------------------------------------------------------
void __fastcall TFormSeria::FormCreate(TObject *Sender)
{
    this->Label1->Enabled=false;
    this->Label2->Enabled=false;
    this->UpDownExp->Enabled=false;
    this->EditExp->Enabled=false;
    this->UpDownStep->Enabled=false;
    this->EditStep->Enabled=false;
}
//---------------------------------------------------------------------------
П.1.7. Файл «Seria.h»
//---------------------------------------------------------------------------
#ifndef seriaH
#define seriaH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TFormSeria : public TForm
{
__published:        // IDE-managed Components
        TButton *Button1;
        TLabel *Label1;
        TLabel *Label2;
        TEdit *EditExp;
        TUpDown *UpDownExp;
        TEdit *EditStep;
        TUpDown *UpDownStep;
        TCheckBox *CheckBox1;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall CheckBox1Click(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
private:       // User declarations
public:                 // User declarations
        bool seria; // true - серия
        __fastcall TFormSeria(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TFormSeria *FormSeria;
//---------------------------------------------------------------------------
#endif
ПРИЛОЖЕНИЕ 2
РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ
При запуске программы, появляется главное окно, представленное на рис. П.2.1.
Главное окно программы

Рис. П.2.1
При нажатии на кнопку «Открыть» появляется диалог, представленный на рис. П.2.2.
Диалог «Отрыть»

Рис. П.2.2
При выборе файла в заголовке главного окна программы отображается имя открытого файла и кнопка «Релаксация » становится доступной (см рис. П.2.3).
Главное окно программы после открытия файла

Рис. П.2.3
При нажатии на кнопку «Серия» появляется диалог, представленный на рис. П.2.4.
Диалог «Серия»

Рис. П.2.4

При нажатии на кнопку  «О программе…» появляется сообщение о версии программы и разработчике, представленное на рис. П.2.5.
Сообщение «О программе…»

Рис. П.2.5
Результаты релаксации изображения сериями кольцевых фильтров  представлены на рис. П.2.6 – П.2.26.  Изображения получены используя следующие  параметры:
Максимальное кольцо:
– внешний радиус – 24 пиксела;
– внутренний радиусами – 20 пиксела.
Минимальное кольцо:
– внешний радиус – 5 пикселов;
– внутренний радиусами – 1 пиксел.
Шаг изменения колец – 1 пиксел.

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

Рис. П.2.6

Изображение, обработанное  кольцевым фильтром Rвнеш=24, Rвнутр=20

Рис. П.2.7
Изображение, обработанное  кольцевым фильтром Rвнеш=23, Rвнутр=19

Рис. П.2.8
Изображение, обработанное  кольцевым фильтром Rвнеш=22, Rвнутр=18

Рис. П.2.9
Изображение, обработанное  кольцевым фильтром Rвнеш=21, Rвнутр=17

Рис. П.2.10
Изображение, обработанное  кольцевым фильтром Rвнеш=20, Rвнутр=16

Рис. П.2.11
Изображение, обработанное  кольцевым фильтром Rвнеш=19, Rвнутр=15

Рис. П.2.12
Изображение, обработанное  кольцевым фильтром Rвнеш=18, Rвнутр=14

Рис. П.2.13
Изображение, обработанное  кольцевым фильтром Rвнеш=17, Rвнутр=13

Рис. П.2.14
Изображение, обработанное  кольцевым фильтром Rвнеш=16, Rвнутр=12

Рис. П.2.15
Изображение, обработанное  кольцевым фильтром Rвнеш=15, Rвнутр=11

Рис. П.2.16
Изображение, обработанное  кольцевым фильтром Rвнеш=14, Rвнутр=10

Рис. П.2.17
Изображение, обработанное  кольцевым фильтром Rвнеш=13, Rвнутр=9

Рис. П.2.18
Изображение, обработанное  кольцевым фильтром Rвнеш=12, Rвнутр=8

Рис. П.2.19
Изображение, обработанное  кольцевым фильтром Rвнеш=11, Rвнутр=7

Рис. П.2.20
Изображение, обработанное  кольцевым фильтром Rвнеш=10, Rвнутр=6

Рис. П.2.21
Изображение, обработанное  кольцевым фильтром Rвнеш=9, Rвнутр=5

Рис. П.2.22
Изображение, обработанное  кольцевым фильтром Rвнеш=8, Rвнутр=4

Рис. П.2.23
Изображение, обработанное  кольцевым фильтром Rвнеш=7, Rвнутр=3

Рис. П.2.24
Изображение, обработанное  кольцевым фильтром Rвнеш=6, Rвнутр=2

Рис. П.2.25
Изображение, обработанное  кольцевым фильтром Rвнеш=5, Rвнутр=1

Рис. П.2.26

ПРИЛОЖЕНИЕ 3
РУКОВОДСТВО ПРОГРАММИСТА
П.3.1. Назначение программы
Программа «Центроидная релаксация» предназначена для автоматизации процесса анализа геометрических характеристик структурных элементов изображения. Анализ производится с использованием кольцевого фильтра, построенного на основе размеров, указанных пользователем системы.
Программа позволяет:
–        рассчитывать кривизну линии в каждой точке;
–        проводить серию экспериментов, указав начальные параметры фильтра, шаг, и количество экспериментов;
–        обрабатывать изображения, отфильтрованные подсистемой «Центроидная фильтрация», а также изображения, не подвергнутые какой-либо предварительной обработке.
–        документировать результаты;
Программа входит в состав системы автоматизированного анализа пространственной структуры изображений, может использоваться на начальном этапе, а также после этапа обработки изображения подсистемой «Центроидной фильтрации». Для визуализации данные передаются в подсистему «Визуализации данных».
П.3.2. Условия применения программы
Разработанная программа является приложением MS Windows. Для ее работы требуется наличие на компьютере операционной системы MS Windows NT4.0/2000/XP и все вытекающее отсюда техническое обеспечение.
Кроме того, требуется:
–        физическая память 1Mб + память на используемые и создаваемые изображения (не менее 500 Мб);
–        оперативная память 2*размер используемого изображения. При нехватке оперативной памяти может использоваться виртуальная память. А за счет того, что все данные находятся в памяти, сильно сокращается время решения задач.
Для написания программы использовалась среда разработки Borland C++ Builder 6.0.
П.3.3. Характеристики программы
После запуска программы пользователь может запускать решение задачи в следующей последовательности:
–        выбор изображения;
–        ввод радиусов кольцевого фильтра;
–        при необходимости задать параметры серии экспериментов;
–        расчет кривизны (релаксация).
После решения задачи программа переходит в режим выбора следующей задачи.  Выполнение задачи расчета кривизны, возможно только после выполнения задач выбора изображения и ввода радиусов кольцевого фильтра.
Размер изображения влияет на время выполнения задачи релаксации и открытия файла. При серийной обработке изображения на время выполнения задачи релаксации дополнительно оказывает влияние количество  необходимых экспериментов. Остальные задачи выполняются относительно быстро.
П.3.4. Обращение к программе
Запустить программу можно из оболочки системы ААПСИ, выбрав пункт «Центроидная релаксация» в разделе «Преобразования» меню, предварительно открыв проект.
Альтернативный способ запуска подсистемы – выполнение файла Relax.exe.
П.3.5. Входные и выходные данные
В качестве входных и выходных данных используются файлы. Все файлы по одному изображению находятся в директории проекта .
Входные и выходные данные:
–        файл структурного описания осевых линий изображения (*.fld);
–        файл структурного описания кривизны линий изображения (*.rlx);
Файл структурного описания осевых линий изображения является двоичным файлом и содержит данные о размере изображения, матрицу весов пикселей исходного изображения после обработки подсистемой центроидной фильтрации. Формат файла представлен в табл. П.3.1.
Таблица П.3.1
 Формат файла структурного описания осевых линий изображения
0
1
y

Height
Width
Height
0
P0,0
P0,1
P0,y

P0,Height
  1
P1,0
P1,1
P1,y

P1,Height
  2
P2,0
P2,1
P2,y

P2,Height
  x
Px,0
Px,1
Px,y

Px,Height
 





  Width
PWidth,0
PWidth,1
PWidth,y

PWidth,Height
где    Width – ширина изображения;
Height – высота изображения;
Px.y – вес пиксела, находящегося на изображении в точке с координатами x, Height -y
Файл структурного описания кривизны линий изображения является двоичным файлом и содержит данные о размере изображения, матрицу кривизны точек линий. Формат файла представлен в табл. П.3.2.

Таблица П.3.2
 Формат файла структурного описания кривизны линий изображения
0
1
y

Height
Width
Height
0
С0,0
C0,1
C0,y
  …
C0,Height
  1
C1,0
C1,1
C1,y

C1,Height
  2
C2,0
C2,1
C2,y

C2,Height
  x
Cx,0
Cx,1
Cx,y

Cx,Height
 





  Width
CWidth,0
CWidth,1
CWidth,y

CWidth,Height
Предыдущая страница 1 2 3 4 5 6 7 8 9 Следующая страница


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

Скачать дипломную работу бесплатно


Постоянный url этой страницы:
http://referatnatemu.com/?id=14919&часть=8



вверх страницы

Рейтинг@Mail.ru
Copyright © 2010-2015 referatnatemu.com