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

   exp=0;

}


//---------------------------------------------------------------------------

//  Обработка ввода внешнего радиуса

//---------------------------------------------------------------------------

void __fastcall TFormParam::OutsideREditChange(TObject *Sender)

{

   outsideR=StrToIntDef(OutsideREdit->Text,0);

   if (outsideR==0) OutsideREdit->Text='0';

   if (outsideR>=25)

   

}


//---------------------------------------------------------------------------

//  Обработка ввода внутреннего радиуса

//---------------------------------------------------------------------------

void __fastcall TFormParam::InsideREditChange(TObject *Sender)

{

  insideR=StrToIntDef(InsideREdit->Text,0);

  if (insideR==0) InsideREdit->Text='0';

  if (insideR>=25)

 

  

}


//---------------------------------------------------------------------------

//  Выделение памяти массиву 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)

      

    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;

   // масса пикселей по оси 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;

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.