Пожаробезопасность при работе с компьютером

 

Помещение, в котором установлено рабочее место инженера-программиста, относится к категории Д по взрывопожароопасности, так как не содержит горючих веществ, но лишь негорючие вещества и материалы в холодном состоянии.

Пожары в помещении, в котором находится ЭВМ, представляют особую опасность, так как сопряжены с большими материальными потерями. Площадь помещения, в котором ведется проектирование, невелика и составляет 8 м2. Как известно пожар может возникнуть при взаимодействии горючих веществ, окисления и источников зажигания. В помещении присутствуют все три основные фактора, необходимые для возникновения пожара. Горючими компонентами являются: строительные материалы для акустической и эстетической отделки помещений, двери, полы, бумага, изоляция кабелей и др.

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

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

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

Одной из наиболее важных задач пожарной защиты является защита строительных помещений от разрушений и обеспечение их достаточной прочности в условиях воздействия высоких температур при пожаре. Учитывая высокую стоимость электронного оборудования, а также категорию его пожарной опасности, здания, в которых предусмотрено размещение ЭВМ, должны быть 1 и 2 степени огнестойкости.

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

В соответствии с “Типовыми правилами пожарной безопасности для промышленных предприятий” залы ЭВМ, помещения для внешних запоминающих устройств, подготовки данных, сервисной аппаратуры, архивов, копировально-множительного оборудования и т.п. необходимо оборудовать дымовыми пожарными извещателями. Так как в этих помещениях при возгорании различных пластмассовых, изоляционных материалов и бумажных изделий выделяется значительное количество дыма и мало теплоты.

Помещение, в котором производится разработка данного проекта, необходимо оборудовать средствами оповещения о пожаре, а также средствами для тушения пожара.

Электрические установки представляют для человека большую потенциальную опасность, так как в процессе эксплуатации или проведении профилактических работ человек может коснуться частей, находящихся под напряжением. Специфическая опасность электроустановок: токоведущие проводники, корпуса стоек ЭВМ и прочего оборудования, оказавшегося под напряжением в результате повреждения (пробоя) изоляции, не подают каких-либо сигналов, которые предупреждают человека об опасности. Реакция человека на электрический ток возникает лишь при протекании последнего через тело человека. Разрядные токи статического электричества чаще всего возникают при прикосновении к любому из элементов ЭВМ. Такие разряды опасности для человека не представляют, но кроме неприятных ощущений они могут привести к выходу из строя ЭВМ. Для снижения величины возникающих зарядов статического электричества покрытие технологических полов следует выполнить из однослойного поливинилхлоридного антистатического линолеума.

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

ЗАКЛЮЧЕНИЕ

 

 В ходе дипломной работы было разработано ПО, позволяющее решать задачу вычисления геометрических характеристик структурных элементов изображения. Программа была написана на языке C++ в среде разработки Borland C++ Builder 6.0.

В процессе работы над подсистемой был исследован метод центроидной релаксации. Система центроидной релаксации позволила проанализировать кривизну структурных элементов изображения, сравнить расчеты с исходным изображением. Результаты сравнения показали, что при центроидной релаксации прямые и кривые линии изображения выделяются верно.

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

 

СПИСОК ЛИТЕРАТУРЫ

 

1. Прэтт У. Цифровая обработка изображений. Т. 1. - М.: Мир, 1982. – 312 с.

2. Дуда Р., Харт П. Распознавание образов и анализ сцен. - М.: Мир, 1976. – 511 с.

3. Павлидис Т. Алгоритмы машинной графики и обработки изображений. - М.: Радио и связь, 1986.

4. Ту Дж., Гонсалес Р. Принципы распознавания образов. - М.: Мир, 1976.

5. Розенфельд А. Распознавание и обработка изображений с помощью ЭВМ. - М.: Мир, 1972.

6. Хуанг Г.С. Быстрые алгоритмы цифровой обработки изображений. – М.: Радио и связь, 1984.

7. Лялин В.Е., Мурынов А.И., Шибаева И.В. Модели представления и кодирования пространственных объектов для передачи изображений сцен по цифровым каналам связи // Информационные технологии в науке, образовании, телекоммуникациях и бизнесе: Материалы 31 Междунар. конф. – Украина, Крым, Ялта–Гурзуф: Ж. «Успехи современного естествознания», №5, 2004, Прилож. №1. - С. 123-125.

8. Шибаева И.В., Мурынов А.И. Применение кластерного анализа для обработки и анализа графических изображений // Проблемы техники и технологии телекоммуникаций: Материалы Пятой Междунар. научн.-техн. конф.- Самара: Изд-во ПГАТИ, 2004.- С. 50-54.

9. Шибаева И.В., Мурынов А.И., Пивоваров И.В. Математические и программные средства распознавания графических изображений для передачи по цифровым каналам связи // Информационные технологии в науке, образовании, телекоммуникациях и бизнесе: Материалы 31 Междунар. конф. – Украина, Крым, Ялта–Гурзуф: Ж. «Успехи современного естествознания» №5, 2004, Прилож. №1. - С. 114-117.

10.  Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. - М.: Наука, 1979. – 720с.

11. П.Бойер, Д.Флостер. Использование Adobe Photoshop 7. Специальное издание. – М.: Вильямс, 2004.

12. Мельниченко В.В., Легейда А.В. Corel Draw Graphic 12. Практическое руководство. – М.: Корона принт, 2004.

13. Кажберов В.О. Использование программ Spotlight и RasterDesk в ОАО «Институт Нефтепродуктпроект» // CADMaster. - 2005. - № 1. - С. 32-35.

14. ГОСТ 12.0.002-80. Система стандартов безопасности труда. Термины и определения. – М.: ИПК Издательство стандартов, 2002

15.  СанПиН 2.2.4. 548 – 96. Гигиенические требования к микроклимату производственных помещений. – М.: Госкомсанэпиднадзор, 1996.

16.  ГОСТ 12.1.006–84. ССБТ. Электромагнитные поля радиочастот. Допустимые уровни на рабочих местах и требования к проведению контроля.

17.  СНиП 23-05–95. Естественное и искусственное освещение.

18.  СанПиН 2.2.2. 542-96. Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы. – М.: Госкомсанэпиднадзор, 1996.

19.  ГОСТ 12.1.038-83. Система стандартов безопасности труда. Электробезопасность. Термины и определения. – М.: Издательство стандартов, 1983.

20.  ГОСТ 12.1.004-91. Система стандартов безопасности труда. Пожарная безопасность. Общие положения. – М.: Издательство стандартов, 1991.

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);

    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;

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

 

где Width – ширина изображения;

Height – высота изображения;

Cx.y – кривизна линии в точке, находящейся на изображении в точке с координатами x, Height -y

П.3.6. Сообщения

Сообщения, выдаваемые оператору приведены в табл. П.3.3

 

Таблица П.3.3

Сообщения оператору

Вид сообщения Описание Действие
«Внешний и внутренний радиусы заданы неверно» Информационное сообщение о неверно заданных радиусах фильтра. Ознакомиться с сообщением и закрыть. Задать радиусы так, чтобы внешний радиус был больше внутреннего(при этом ни один не должен быть равен 0).
Вид сообщения Описание Действие
«Обработка изображения…» Сообщение о том, что программа обрабатывает изображение. Не предпринимать никаких действий
«Обработка завершена.» Программа обработала изображения и готова к дальнейшей работе. Ознакомиться с сообщением и нажать кнопку «ОК»

 

 

ПРИЛОЖЕНИЕ 4

 

РУКОВОДСТВО ОПЕРАТОРА

П.4.1. Назначение программы

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

Программа позволяет:

– рассчитывать кривизну линии в каждой точке;

– проводить серию экспериментов, указав начальные параметры фильтра, шаг, и количество экспериментов;

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

– документировать результаты;

Для визуализации данные передаются в подсистему «Визуализации данных».

П.4.2. Условия выполнения программы

Разработанная программа является приложением MS Windows. Для ее работы требуется наличие на компьютере операционной системы MS Windows NT4.0/2000/XP и все вытекающее отсюда техническое обеспечение.

Кроме того, требуется:

– физическая память 1Mб + память на используемые и создаваемые изображения (не менее 500 Мб);

– оперативная память 2*размер используемого изображения. При нехватке оперативной памяти может использоваться виртуальная память. А за счет того, что все данные находятся в памяти, сильно сокращается время решения задач.

Для написания программы использовалась среда разработки Borland C++ Builder 6.0.

П.4.3. Выполнение программы

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

Для запуска программы оператор из оболочки системы ААПСИ должен произвести выбор пункта «Центроидная релаксация» меню «Преобразования». На экране будет отображено главное окно подсистемы (рис П.4.1).

 

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

Рис.П.4.1

 

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


Диалог открытия файла

Рис.П.4.2

 

После загрузки открываемого файла в оперативную память в заголовке формы появляется название открытого файла (рис.П.4.3).

 

Главное окно подсистемы после открытия файла

Рис.П.4.3

 

Далее оператор вводит параметры фильтра: внешний и внутренний радиусы.

Теперь оператор получает возможность воспользоваться функциями программы для выполнения центроидной релаксации.

По нажатию кнопки “Серия” вызывается диалог (рис.П.4.4), позволяющий задать параметры серии: количество экспериментов, шаг изменения фильтра, флажок разрешения/запрещения серии вычислений.

 

Диалог «Серия экспериментов»

Рис.П.4.4

 

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

Вид главного окна программы при обработке изображения

 

Рис.П.4.5

 

 По окончании обработки программа выдаст соответствующее сообщение (рис.П.4.6).


Сообщение о завершении обработки изображения

Рис.П.4.6

 

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

Для завершения работы с программой оператору необходимо нажать на кнопку   системного меню, или комбинацию клавиш Alt+F4.

П.4.5. Сообщения оператору

Сообщения, выдаваемые оператору приведены в табл. П.4.1

 

Таблица П.4.1

Сообщения оператору

Вид сообщения Описание Действие
«Внешний и внутренний радиусы заданы неверно» Информационное сообщение о неверно заданных радиусах фильтра. Ознакомиться с сообщением и закрыть. Задать радиусы так, чтобы внешний радиус был больше внутреннего(при этом ни один не должен быть равен 0).
 «Обработка изображения…» Сообщение о том, что программа обрабатывает изображение. Не предпринимать никаких действий
«Обработка завершена.» Программа обработала изображения и готова к дальнейшей работе. Ознакомиться с сообщением и нажать кнопку «ОК»

 







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



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