Мои программы
ПРОГРАММА «1-Опознание»
ОГЛАВЛЕНИЕ
1. Исследование опознания
2. Исходные данные
3 Цель программы
4. Алгоритм
5.Вывод
6. Итоги
7. Скачать программу
Приложение 1
Распечатка программы «1-Опознание»
1. Исследование опознания
Исследование опознания можно разделить на три этапа.
Этап 1.
Задаются объекты опознания.
Этап 2
Задаются условия опознания.
Этап 3
Задается алгоритм опознания.
2. Исходные данные.
Пример
Const
a=1000; //размер матрицы объектов
b=30;//число объектов
c=12;// номер объекта для вывода
d=2;//задание вероятности
x1=1;//координата1 окна опознания
y1=1;// координата 1 окна опознания
x2=200;//координата2 окна опознания
y2=200;// координата 2 окна опознания
3. Цель программы
В процессе опознания определяется наиболее вероятные центры объектов в окне опознания.
4. Алгоритм]
4.1.Находятся центры объектов на исходной матрице.
w:array [1..3, 1..b] ofcardinal;//1, 2 координаты центров объектов
// объектов опознания
4.2. Находятся элементы объектов.
Вероятность элемента объекта определяется расстоянием от центра объекта.
Чем больше расстояние, тем меньше вероятность появления элемента объекта.
Расстояние находится в прямоугольнойметрике.
s:array [1..a,1..a,1..b] ofcardinal;// матрицаразмещения элементов
//объектов на матрице
4.3. Вычисляются матрицы
u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания
//к сумме элементов всех объектов
u1: array [1..b] of variant;// частное суммы элементов объекта в окне опознания
//к сумме элементовобъекта
4.4. Находится максимальный элемент множества u –z1, объект –z2.
Находится максимальный элемент множества u1 –z3, объект –z4.
4.5. Находится второй по величине максимальный элемент множества u –z5, объект –z6.
Находится второй по величине максимальный элемент множества u1 –z7, объект –z8.
6. Итоги]
Как показали расчёты, центр объекта z1 часто, но не всегда, лежит в окне опознания.
7. Вывод
Выводятся все массивы введенные вышеz1,z2, z3, z4.
7. Скачать программу
https://disk.yandex.ru/d/uqpxmWG8Pj8HLA
]
]
Приложение 1
Распечатка программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button5: TButton;
Label1: TLabel;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Edit1: TEdit;
Label4: TLabel;
StringGrid1: TStringGrid;
StringGrid4: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
a=1000; //размер матрицы объектов
b=30;//число объектов
c=12;// номер объекта для вывода
d=2;//задание вероятности
x1=1;//координата1 окнаопзнавания
y1=1;// координата 1 окнаопзнавания
x2=250;//координата2опзнавания
y2=250;// координата 2 окна опзнавания
var
Tick: Cardinal;
w:array [1..3, 1..b] ofcardinal;//1, 2 координаты центров объектов
// объектов опознания
//3 число элементов объекта
s:array [1..a,1..a,1..b] ofcardinal;// матрицаразмещения элементов
//объектов на матрице
p:array [1..b] ofcardinal;// сумма элементовдля каждого объекта
// в окне опознания
u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания
//к сумме элементов всех объектов
u1: array [1..b] of variant;//частное сумме элементов объекта в окне опознания
//к сумме элементовобъекта
i,j,q ,z,r,i1,j1,tt,t,g ,k, v,y:integer;
n1, n2, n3,n4: integer;//
m1,m2,m3,m4,m5: integer;//
f1,f2,f3,f4,f5,z2,z4,z6,z8 : integer;//
z1,z3,z5,z7 : real;
procedure TForm1.Button1Click(Sender: TObject);
// окантовка
begin
for q:=1 to 5// нумерация по вертикалив табл №1 ,
doStringGrid1.Cells[0,q]:=IntToStr(q) ;
for q:=1 to b //нумерация по горизонтали в табл №1 ,
doStringGrid1.Cells[q,0]:=IntToStr(q);
for q:= 1 to a// нумерация по вертикалив табл №2 ,
do StringGrid2.Cells[0,q]:=IntToStr(q);
for q:=1 to a //ну2мерация по горизонтали в табл №2 ,
doStringGrid2.Cells[q,0]:=IntToStr(q);
for q:= 1 to 10// нумерация по вертикалив табл №1 ,
doStringGrid3.Cells[0,q]:=IntToStr(q);
for q:=1 to b//нумерация по горизонтали в табл №1 ,
doStringGrid3.Cells[q,0]:=IntToStr(q);
StringGrid1.Cells[0,0] := 'w[ ]';
StringGrid2.Cells[0,0] := 's[ ]';
StringGrid3.Cells[0,1] := 'p[ ]';
StringGrid3.Cells[0,2] := 'u[ ]';
StringGrid3.Cells[0,3] := 'u1[ ]';
////////////////// Генерация объектов
for r:= 1 to b do
begin
Form1.Caption:=IntToStr(GetTickCount-Tick);
n1:=0; n2:=0;
begin
n1:= random(a)+1;
n2:= random(a)+1;
w[1,r] := n1;
w[2,r] := n2;
end;
begin
for i:=1 to a do
for j:=1 to a do
if ((random (((abs(n1-i)+abs(n2-j)))+1)*3) <=d )
then s[i,j,r] :=r;
end;
end;
fort:=1 to b do
for i:=1 to a do
for j:=1 to a do
if s[i,j,t] >0then
w[3,t] :=w[3,t]+1;
//// Опознавание объъектов
for g:=1 to bdo
for i:=y1 to y2 do
for j:=x1 to x2 do
if s[i,j,g] >0thenbegin
Form1.Caption:=IntToStr(GetTickCount-Tick);
p[g] :=p[g] +1;
z:=z+1;
end;
for i:=1 to b do begin
Form1.Caption:=IntToStr(GetTickCount-Tick);
u := 100*p /z;
u := 100*p /z;
u1 := 1000* p/w[3,i];
end;
//Опознание центров z2 и z4в окне опознанпия
for i:=1 to b do
begin
Form1.Caption:=IntToStr(GetTickCount-Tick);
ifu > z1 then begin z1:= u; z2:=i;end;
ifu1 > z3 then begin z3:= u1; z4:=i;end;
end;
//Опознание центров z6 и z8в окне опознанпия
for i:=1 to b do
begin
if i<>z2 then ifu > z5 then begin z5:= u; z6:=i;end;
if i<>z4 then ifu1 > z7 then begin z7:= u1; z8:=i;end;
end;
////Вывод
for i:=1 to bdobegin
Form1.Caption:=IntToStr(GetTickCount-Tick);
StringGrid1.Cells[i,1]:= IntToStr(w[1,i]);
StringGrid1.Cells[i,2]:= IntToStr(w[2,i]);
StringGrid1.Cells[i,3]:= IntToStr(w[3,i]);
end;
for I:=1 to a do
for J:=1 to ado
StringGrid2.Cells[j,i]:= IntToStr(s[i,j,z4])+' * '+IntToStr(s[i,j,z8]);
for j:=1 to b do
StringGrid3.Cells[j,1]:= IntToStr(p[j]) ;
fori:=1 to b dobegin
Form1.Caption:=IntToStr(GetTickCount-Tick);
StringGrid3.Cells[i,2]:=FormatFloat('0.00',u);
StringGrid3.Cells[i,3]:=FormatFloat('0.00',u1);
end;
Edit1.Text :='w[1,1]=' +''+ IntToStr(w[1,1])
+''+ 'w[2,1]=' +''+ IntToStr(w[2,1])
+''+ 'n1=' +''+ IntToStr(n1)+''+ 'n2=' +''+ IntToStr(n2)
+''+ 'z=' +''+ IntToStr(z)
+''+ 'z1=' +''+ FormatFloat('0.00',z1) +''+ 'z2=' +''+ IntToStr(z2)
+''+ 'z3=' +''+ FormatFloat('0.00',z3) +''+ 'z4=' +''+ IntToStr(z4)
+''+ 'z5=' +''+ FormatFloat('0.00',z5) +''+ 'z6=' +''+ IntToStr(z6)
+''+ 'z7=' +''+ FormatFloat('0.00',z7) +''+ 'z8=' +''+ IntToStr(z8);
Form1.Caption:=IntToStr(GetTickCount-Tick);
end;
////////////////////////////////////////////////////////////////
procedure TForm1.Button5Click(Sender: TObject);
begin
close
end;
initialization
randomize;
end.
ПРОГРАММА «1-Опознание»
]
ОГЛАВЛЕНИЕ]
1. Исследование опознания
2. Исходные данные
3 Цель программы
4. Алгоритм
5.Вывод
6. Итоги
7. Скачать программу
Приложение 1
Распечатка программы «1-Опознание»
1. Исследование опознания
Исследование опознания можно разделить на три этапа.
Этап 1.
Задаются объекты опознания.
Этап 2
Задаются условия опознания.
Этап 3
Задается алгоритм опознания.
2. Исходные данные.
Пример
Const
a=1000; //размер матрицы объектов
b=30;//число объектов
c=12;// номер объекта для вывода
d=2;//задание вероятности
x1=1; //координата 1 окна опознания
y1=1; // координата 1 окна опознания
x2=200; //координата 2 окна опознания
y2=200; // координата 2 окна опознания
3. Цель программы
В процессе опознания определяется наиболее вероятные центры объектов в окне опознания.
4. Алгоритм]
4.1. Находятся центры объектов на исходной матрице.
w: array [1..3, 1..b] of cardinal;//1, 2 координаты центров объектов
// объектов опознания
4.2. Находятся элементы объектов.
Вероятность элемента объекта определяется расстоянием от центра объекта.
Чем больше расстояние, тем меньше вероятность появления элемента объекта.
Расстояние находится в прямоугольной метрике.
s: array [1..a,1..a,1..b] of cardinal;// матрица размещения элементов
//объектов на матрице
4.3. Вычисляются матрицы
u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания
//к сумме элементов всех объектов
u1: array [1..b] of variant;// частное суммы элементов объекта в окне опознания
//к сумме элементов объекта
4.4. Находится максимальный элемент множества u –z1, объект –z2.
Находится максимальный элемент множества u1 –z3, объект –z4.
4.5. Находится второй по величине максимальный элемент множества u –z5, объект –z6.
Находится второй по величине максимальный элемент множества u1 –z7, объект –z8.
6. Итоги]
Как показали расчёты, центр объекта z1 часто, но не всегда, лежит в окне опознания.
7. Вывод
Выводятся все массивы введенные выше z1, z2, z3, z4.
7. Скачать программу
https://disk.yandex.ru/d/uqpxmWG8Pj8HLA
]
]
Приложение 1
Распечатка программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button5: TButton;
Label1: TLabel;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Edit1: TEdit;
Label4: TLabel;
StringGrid1: TStringGrid;
StringGrid4: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
a=1000; //размер матрицы объектов
b=30;//число объектов
c=12;// номер объекта для вывода
d=2;//задание вероятности
x1=1; //координата 1 окна опзнавания
y1=1; // координата 1 окна опзнавания
x2=250; //координата 2 опзнавания
y2=250; // координата 2 окна опзнавания
var
Tick: Cardinal;
w: array [1..3, 1..b] of cardinal;//1, 2 координаты центров объектов
// объектов опознания
//3 число элементов объекта
s: array [1..a,1..a,1..b] of cardinal;// матрица размещения элементов
//объектов на матрице
p: array [1..b] of cardinal;// сумма элементов для каждого объекта
// в окне опознания
u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания
//к сумме элементов всех объектов
u1: array [1..b] of variant;//частное сумме элементов объекта в окне опознания
//к сумме элементов объекта
i,j,q ,z,r,i1,j1,tt,t,g ,k, v,y: integer;
n1, n2, n3,n4 : integer;//
m1,m2,m3,m4,m5: integer;//
f1,f2,f3,f4,f5,z2,z4,z6,z8 : integer;//
z1,z3,z5,z7 : real;
procedure TForm1.Button1Click(Sender: TObject);
// окантовка
begin
for q:=1 to 5 // нумерация по вертикали в табл №1 ,
do StringGrid1.Cells[0,q]:=IntToStr(q) ;
for q:=1 to b //нумерация по горизонтали в табл №1 ,
do StringGrid1.Cells[q,0]:=IntToStr(q);
for q:= 1 to a // нумерация по вертикали в табл №2 ,
do StringGrid2.Cells[0,q]:=IntToStr(q);
for q:=1 to a //ну2мерация по горизонтали в табл №2 ,
do StringGrid2.Cells[q,0]:=IntToStr(q);
for q:= 1 to 10 // нумерация по вертикали в табл №1 ,
do StringGrid3.Cells[0,q]:=IntToStr(q);
for q:=1 to b//нумерация по горизонтали в табл №1 ,
do StringGrid3.Cells[q,0]:=IntToStr(q);
StringGrid1.Cells[0,0] := 'w[ ]';
StringGrid2.Cells[0,0] := 's[ ]';
StringGrid3.Cells[0,1] := 'p[ ]';
StringGrid3.Cells[0,2] := 'u[ ]';
StringGrid3.Cells[0,3] := 'u1[ ]';
////////////////// Генерация объектов
for r:= 1 to b do
begin
Form1.Caption:=IntToStr(GetTickCount-Tick);
n1:=0; n2:=0;
begin
n1:= random(a)+1;
n2:= random(a)+1;
w[1,r] := n1;
w[2,r] := n2;
end;
begin
for i:=1 to a do
for j:=1 to a do
if ((random (((abs(n1-i)+abs(n2-j)))+1)*3) <=d )
then s[i,j,r] :=r;
end;
end;
for t:=1 to b do
for i:=1 to a do
for j:=1 to a do
if s[i,j,t] >0 then
w[3,t] := w[3,t]+1;
//// Опознавание объъектов
for g:=1 to b do
for i:=y1 to y2 do
for j:=x1 to x2 do
if s[i,j,g] >0 then begin
Form1.Caption:=IntToStr(GetTickCount-Tick);
p[g] := p[g] +1;
z:=z+1;
end;
for i:=1 to b do begin
Form1.Caption:=IntToStr(GetTickCount-Tick);
u := 100* p /z;
u := 100* p /z;
u1 := 1000* p/w[3,i];
end;
//Опознание центров z2 и z4 в окне опознанпия
for i:=1 to b do
begin
Form1.Caption:=IntToStr(GetTickCount-Tick);
if u > z1 then begin z1:= u; z2:=i;end;
if u1 > z3 then begin z3:= u1; z4:=i;end;
end;
// Опознание центров z6 и z8 в окне опознанпия
for i:=1 to b do
begin
if i<>z2 then if u > z5 then begin z5:= u; z6:=i;end;
if i<>z4 then if u1 > z7 then begin z7:= u1; z8:=i;end;
end;
////Вывод
for i:=1 to b do begin
Form1.Caption:=IntToStr(GetTickCount-Tick);
StringGrid1.Cells[i,1]:= IntToStr(w[1,i]);
StringGrid1.Cells[i,2]:= IntToStr(w[2,i]);
StringGrid1.Cells[i,3]:= IntToStr(w[3,i]);
end;
for I:=1 to a do
for J:=1 to a do
StringGrid2.Cells[j,i]:= IntToStr(s[i,j,z4])+' * '+IntToStr(s[i,j,z8]);
for j:=1 to b do
StringGrid3.Cells[j,1]:= IntToStr(p[j]) ;
for i:=1 to b do begin
Form1.Caption:=IntToStr(GetTickCount-Tick);
StringGrid3.Cells[i,2]:= FormatFloat('0.00',u);
StringGrid3.Cells[i,3]:= FormatFloat('0.00',u1);
end;
Edit1.Text :='w[1,1]=' +' '+ IntToStr(w[1,1])
+' '+ 'w[2,1]=' +' '+ IntToStr(w[2,1])
+' '+ 'n1=' +' '+ IntToStr(n1) +' '+ 'n2=' +' '+ IntToStr(n2)
+' '+ 'z=' +' '+ IntToStr(z)
+' '+ 'z1=' +' '+ FormatFloat('0.00',z1) +' '+ 'z2=' +' '+ IntToStr(z2)
+' '+ 'z3=' +' '+ FormatFloat('0.00',z3) +' '+ 'z4=' +' '+ IntToStr(z4)
+' '+ 'z5=' +' '+ FormatFloat('0.00',z5) +' '+ 'z6=' +' '+ IntToStr(z6)
+' '+ 'z7=' +' '+ FormatFloat('0.00',z7) +' '+ 'z8=' +' '+ IntToStr(z8);
Form1.Caption:=IntToStr(GetTickCount-Tick);
end;
///////// ///////////////////////////////////////////////////////
procedure TForm1.Button5Click(Sender: TObject);
begin
close
end;
initialization
randomize;
end.