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




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

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




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

скачать

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

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

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

21.           ГОСТ 12.1.003–83. ССБТ. Шум. Общие  требования безопасности (с изменениями по И-1-III-89).
22.           Почерняев С.В., Килин И.В., Сенилов М.А. Методические указания по дипломному  проектированию. – Ижевск: Издательство ИжГТУ, 1994.
23.           ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. – М.: Издательство стандартов, 1991
24.            ГОСТ 19.105-78 ЕСПД. Общие требования  к  программным документам. – М.: Издательство стандартов, 1988
25.            ГОСТ 19.401-78 ЕСПД. Текст программы. Требования  к содержанию и оформлению. – М.: Издательство стандартов, 1988
26.            ГОСТ 19.404-79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению. – М.: Издательство стандартов, 1988
27.            ГОСТ 19.504-79 ЕСПД. Руководство программиста. Требования  к содержанию и оформлению. – М.: Издательство стандартов, 1988
28.            ГОСТ 19.505-79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению. – М.: Издательство стандартов, 1988
ПРИЛОЖЕНИЕ 1
ТЕКСТ ПРОГРАММЫ
П.1.1. Файл «Relax.cpp»
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("ParamCentroid.cpp", FormParam);
USEFORM("About.cpp", FormAbout);
USEFORM("seria.cpp", FormSeria);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Initialize();
                 Application->CreateForm(__classid(TFormParam), &FormParam);
                 Application->CreateForm(__classid(TFormAbout), &FormAbout);
                 Application->CreateForm(__classid(TFormSeria), &FormSeria);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}
//---------------------------------------------------------------------------
П.1.2. Файл «ParamCentriod.cpp»
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Seria.h"
#include "ParamCentroid.h"
#include "CentroidRelax.h"
#include "About.h"
#include <dir.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormParam *FormParam;
HDC dc;
//---------------------------------------------------------------------------
__fastcall TFormParam::TFormParam(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
//     Открытие входного файла и подготовка его к работе
//---------------------------------------------------------------------------
void __fastcall TFormParam::OpenBtnClick(TObject *Sender)
{
  char buffer[MAXPATH];
  if (OpenDialog1->Execute())
   {
    if (ExtractFileExt(OpenDialog1->FileName)==".bmp")
    {
      OpenBMP();
      RelaxBtn->Enabled=true;
      }
    else
      if (ExtractFileExt(OpenDialog1->FileName)==".fld")
       {
        OpenFLD();
        RelaxBtn->Enabled=true;
        }
       else
        Application->MessageBoxA("Недопустимый тип файла", "Ошибка", MB_OK | MB_ICONEXCLAMATION);
  }
}
//---------------------------------------------------------------------------
//  Обработка нажатия кнопки "О программе..."
//---------------------------------------------------------------------------
void __fastcall TFormParam::AboutBtnClick(TObject *Sender)
{
   FormAbout->Show();
}
//---------------------------------------------------------------------------
//  Обработка нажатия кнопки "Релаксация"
//---------------------------------------------------------------------------
void __fastcall TFormParam::RelaxBtnClick(TObject *Sender)
{
  string Name;
  AnsiString FileSafeName;
  int index;
   if ((insideR && outsideR)&& (insideR <= outsideR))
      {
       for(int i=0;i<=exp;i++)
       {
        // показ имени открытого файла
        FormParam->Caption=ExtractFileName("Обработка изображения....");
        Imaging(insideR,outsideR);
        // BEGIN DEBUG
         dc=bmp->Canvas->Handle;
         BitBlt(dc,0,0,Width,Height,bmp->Canvas->Handle,0,0,SRCCOPY);
         // формирование имени файла
         index=AnsiPos(ExtractFileExt(OpenDialog1->FileName),ExtractFileName(OpenDialog1->FileName));
         Name = ExtractFileName(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)+".bmp";
         bmp->SaveToFile(FileSafeName);
        // END DEBUG
         insideR+=step;
         outsideR+=step;
        } // for
       Application->MessageBoxA("Обработка завершена", "Информация", MB_OK | MB_ICONINFORMATION);
       // показ имени открытого файла
       FormParam->Caption=ExtractFileName(OpenDialog1->FileName);
       }
   else
      Application->MessageBoxA("Внешний и внутренний радиусы заданы неверно", "Ошибка", MB_OK | MB_ICONEXCLAMATION);
}
//---------------------------------------------------------------------------
//  Создание формы
//---------------------------------------------------------------------------
void __fastcall TFormParam::FormCreate(TObject *Sender)
{
   char buffer[MAXPATH];
   RelaxBtn->Enabled=false;
   bmp=new Graphics::TBitmap;
   // получение текущей директории проекта
   OpenDialog1->InitialDir=getcwd(buffer, MAXPATH);
   step=0;
   exp=0;
}
//---------------------------------------------------------------------------
//  Обработка ввода внешнего радиуса
//---------------------------------------------------------------------------
void __fastcall TFormParam::OutsideREditChange(TObject *Sender)
{
   outsideR=StrToIntDef(OutsideREdit->Text,0);
   if (outsideR==0) OutsideREdit->Text='0';
   if (outsideR>=25)
    {
     Application->MessageBoxA("Значение внешнего радиуса должно быть не более 24", "Ошибка", MB_OK | MB_ICONEXCLAMATION);
     OutsideREdit->Text='0';
    }
}
//---------------------------------------------------------------------------
//  Обработка ввода внутреннего радиуса
//---------------------------------------------------------------------------
void __fastcall TFormParam::InsideREditChange(TObject *Sender)
{
  insideR=StrToIntDef(InsideREdit->Text,0);
  if (insideR==0) InsideREdit->Text='0';
  if (insideR>=25)
  {
   Application->MessageBoxA("Значение внутреннего радиуса должно быть не более 24", "Ошибка", MB_OK | MB_ICONEXCLAMATION);
   InsideREdit->Text='0';
   }
}
//---------------------------------------------------------------------------
//  Выделение памяти массиву ImArr
//---------------------------------------------------------------------------
void __fastcall TFormParam::ImArrTakeMemory(  unsigned short int Width, unsigned short int Height)
{
  if (ImArr!=NULL)
  {
   // удаляем предыдущий массив
   for (int i=0;i<=LastWidth;i++)
       delete[] ImArr[i];
   delete[] ImArr;
  }
  LastWidth= Width;
  // выделяем память
  ImArr = new unsigned short int*[Width];
  for (int i=0;i<=Width;i++)
       ImArr[i] = new unsigned short int [Height];
  // обнуление массива
   for (int i=0;i<=Width;i++)
     {
      for (int j=0;j<=Height;j++)
        {
          ImArr[i][j]=0;
         }
      }
}
//---------------------------------------------------------------------------
//  Выделение памяти массиву СкArr
//---------------------------------------------------------------------------
void __fastcall TFormParam::CrArrTakeMemory(unsigned short int Width, unsigned short int Height)
{
  if (CrArr!=NULL)
  {
   // удаляем предыдущий массив
   for (int i=0;i<=LastWidth;i++)
       delete[] CrArr[i];
   delete[] CrArr;
  }
  LastWidth= Width;
  // выделяем память
  CrArr = new unsigned short int*[Width];
  for (int i=0;i<=Width;i++)
       CrArr[i] = new unsigned short int [Height];
   // обнуление массива
  for (int i=0;i<=Width;i++)
    {
     for (int j=0;j<=Height;j++)
       {
         CrArr[i][j]=0;
        }
      }
}
//---------------------------------------------------------------------------
//    Серия
//---------------------------------------------------------------------------
void __fastcall TFormParam::SeriaBtnClick(TObject *Sender)
{
     FormSeria->Show();
}
//---------------------------------------------------------------------------
//  Открытие файла *.bmp
//---------------------------------------------------------------------------
void TFormParam::OpenBMP()
{
    bmp->LoadFromFile( OpenDialog1->FileName);
    Width=bmp->Width;
    Height=bmp->Height;
    ImArrTakeMemory(Width,Height);
    CrArrTakeMemory(Width,Height);
    // Transform coordinate
    for (int i=0;i<=Width;i++)
     {
      for (int j=0;j<=Height;j++)
        {
          ImArr[i][j]=bmp->Canvas->Pixels[i][bmp->Height-j];
         }
      }
    // показ имени открытого файла
    FormParam->Caption=ExtractFileName(OpenDialog1->FileName);
}
//---------------------------------------------------------------------------
// Открытие файла *.fld
//---------------------------------------------------------------------------
void TFormParam::OpenFLD()
{
   FILE *InFile;
   void *data;
   //FFileName = ;
    if((InFile=fopen(OpenDialog1->FileName.c_str(), "rb"))==NULL)
       {
       Application->MessageBoxA("Ошибка открытия файла", "Ошибка", MB_OK | MB_ICONEXCLAMATION);
       }
    else
       {
         fread(&data,sizeof(unsigned short int),1, InFile);
         Width=(unsigned short int)data;//ширина изображения
         fread(&data,sizeof(unsigned short int),1, InFile);
         Height=(unsigned short int)data;// длина изображения
         ImArrTakeMemory(Width,Height);
         CrArrTakeMemory(Width,Height);
         for (int i=0;i<Width;i++)
            {
             for (int j=0;j<Height;j++)
             {
               fread(&data,sizeof(unsigned short int),1, InFile);
               ImArr[i][j]=(unsigned short int)data;
              } // for (j)
            } // for (i)
         // показ имени открытого файла
        FormParam->Caption=ExtractFileName(OpenDialog1->FileName);
        }
}
//---------------------------------------------------------------------------
// Закрытие программы
//---------------------------------------------------------------------------
void __fastcall TFormParam::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    //освобождаем используемую память
  if (Width!=0)
  {
   for (int i=0;i<=Width;i++)
       {
        delete[] ImArr[i];
        delete[] CrArr[i];
        }
   delete[] ImArr;
   delete[] CrArr;
   }
   delete(bmp);
  FormSeria->Close();
}
//---------------------------------------------------------------------------
П.1.3.Файл «ParamCentriod.h»
//---------------------------------------------------------------------------
#ifndef ParamCentroidH
#define ParamCentroidH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <Dialogs.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TFormParam : public TForm
{
__published:        // IDE-managed Components
        TGroupBox *GroupRadius;
        TLabel *Label1;
        TEdit *OutsideREdit;
        TLabel *Label2;
        TEdit *InsideREdit;
        TBitBtn *OpenBtn;
        TBitBtn *RelaxBtn;
        TOpenDialog *OpenDialog1;
        TBitBtn *AboutBtn;
        TBitBtn *SeriaBtn;
        void __fastcall OpenBtnClick(TObject *Sender);
        void __fastcall AboutBtnClick(TObject *Sender);
        void __fastcall RelaxBtnClick(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall OutsideREditChange(TObject *Sender);
        void __fastcall InsideREditChange(TObject *Sender);
        void __fastcall SeriaBtnClick(TObject *Sender);
        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private:       // User declarations
        int insideR;//внутренний
        int outsideR;//внешний
public:                 // User declarations
        // Global variable
         unsigned short int **ImArr; // считанное изображение из файла *.bmp или *.mass
         unsigned short int **CrArr; // массив кривизны
         unsigned short int Width;
         unsigned short int Height;
         unsigned short int LastWidth;
         int step;// шаг
         int exp; // эксперименты
         Graphics::TBitmap *bmp;
        __fastcall TFormParam(TComponent* Owner);
         void __fastcall ImArrTakeMemory( unsigned short int Width,unsigned short int Height);
        void OpenBMP();
        void OpenFLD();
        void __fastcall CrArrTakeMemory(unsigned short int Width, unsigned short int Height); // выделение памяти динамическому массиву
};
//---------------------------------------------------------------------------
extern PACKAGE TFormParam *FormParam;
//---------------------------------------------------------------------------
#endif
П.1.4.Файл «CentriodRelax.cpp»
//---------------------------------------------------------------------------
#pragma hdrstop
#include "ParamCentroid.h"
#include "CentroidRelax.h"
// definitions
#define MASK_SIZE   24
#define PI   3.1415926535897932384626433832795
//---------------------------------------------------------------------------
COORDINATE FltArr[MASK_SIZE*MASK_SIZE]; // массив координат точек фильтра
int FltArr_index;
#pragma package(smart_init)
// Piksels Filter
void ClearFltArr(void);
//---------------------------------------------------------------------------
// Вычисление центра масс
//---------------------------------------------------------------------------
COORDINATE CentrMass(PIXEL CF)
{
  COORDINATE P;
  int M=0,Wx=0,Wy=0;
  int Cx=0,Cy=0;
  // работа с маской
  for (int k=0;k<FltArr_index;k++)
   {
    M+= FormParam->ImArr[CF.x+FltArr[k].x][CF.y+FltArr[k].y]; // масса пикселей в фильтре
    Wx+=(CF.x+FltArr[k].x)*FormParam->ImArr[CF.x+FltArr[k].x][CF.y+FltArr[k].y]; //веса пикселей по x
    Wy+=(CF.y+FltArr[k].y)*FormParam->ImArr[CF.x+FltArr[k].x][CF.y+FltArr[k].y];//веса пикселей по y
   }
   // масса пикселей
   M=M/255;
Предыдущая страница 1 2 3 4 5 6 7 8 9 Следующая страница


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

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


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



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

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