Искусственные нейронные сети. Каширина И.Л. - 47 стр.

UptoLike

Составители: 

47
SBStatus.SimpleText:='Âåñà èíèöèèðîâàíû ñëó÷àéíûìè ÷èñëàìè';
end;
Заполнение входного вектора по изображению на сетке:
procedure TMainForm.DGImgSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
imgmatrix[Arow,Acol]:=abs(1-imgmatrix[Arow,Acol]);
end;
Масштабирование и выравнивание (локализация) изображения:
procedure TMainForm.BtnScaleClick(Sender: TObject);
var
i,j:integer;
xmin,xmax,ymin,ymax:integer;
tmp:bmatrix;
begin
for i:=0 to n-1 do for j:=0 to n-1 do tmp[i,j]:=0;
// èùåì ãðàíèöû êâàäðàòа, ограничивающего ðèñóíок
xmin:=n;xmax:=-1;ymin:=n;ymax:=-1;
for i:=0 to n-1 do
for j:=0 to n-1 do
if imgmatrix[i,j]=1 then
begin
if j<xmin then xmin:=j;
if j>xmax then xmax:=j;
if i<ymin then ymin:=i;
if i>ymax then ymax:=i;
end;
// ìàñøòàáèðóåì до границ всей сетки
for i:=0 to n-1 do
for j:=0 to n-1 do
begin
tmp[i,j]:=imgmatrix[ymin+trunc((i/n)*(ymax-ymin+1)),xmin+trunc((j/n)*(xmax
xmin+1))];
end;
DGImg.Enabled:=false;
for i:=0 to n-1 do
for j:=0 to n-1 do
imgmatrix[i,j]:=tmp[i,j];
DGImg.Enabled:=true;
Mainform.DGImg.Repaint;
end;
Отображение отмасштабированного и локализованного рисунка на сетке (по из-
мененным значениям входной матрицы):
procedure TMainForm.DGImgDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with (Sender as TDrawGrid).Canvas do
begin
if imgmatrix[ARow,ACol]=1 then Brush.Color:=clRed;
FillRect(rect);
end;
end;
Очистка изображения (стирается рисунок на сетке):
procedure TMainForm.BtnClearClick(Sender: TObject);
var i,j:integer;
                                        47
  SBStatus.SimpleText:='Âåñà èíèöèèðîâàíû ñëó÷àéíûìè ÷èñëàìè';
end;

Заполнение входного вектора по изображению на сетке:
procedure TMainForm.DGImgSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  imgmatrix[Arow,Acol]:=abs(1-imgmatrix[Arow,Acol]);
end;

Масштабирование и выравнивание (локализация) изображения:
procedure TMainForm.BtnScaleClick(Sender: TObject);
var
  i,j:integer;
  xmin,xmax,ymin,ymax:integer;
  tmp:bmatrix;
begin
  for i:=0 to n-1 do for j:=0 to n-1 do tmp[i,j]:=0;
// èùåì ãðàíèöû êâàäðàòа, ограничивающего ðèñóíок
  xmin:=n;xmax:=-1;ymin:=n;ymax:=-1;
  for i:=0 to n-1 do
  for j:=0 to n-1 do
     if imgmatrix[i,j]=1 then
     begin
       if jxmax then xmax:=j;
       if iymax then ymax:=i;
     end;
// ìàñøòàáèðóåì до границ всей сетки
  for i:=0 to n-1 do
  for j:=0 to n-1 do
  begin
     tmp[i,j]:=imgmatrix[ymin+trunc((i/n)*(ymax-ymin+1)),xmin+trunc((j/n)*(xmax
xmin+1))];
  end;
  DGImg.Enabled:=false;
  for i:=0 to n-1 do
  for j:=0 to n-1 do
     imgmatrix[i,j]:=tmp[i,j];
  DGImg.Enabled:=true;
  Mainform.DGImg.Repaint;
end;

Отображение отмасштабированного и локализованного рисунка на сетке (по из-
мененным значениям входной матрицы):
procedure TMainForm.DGImgDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with (Sender as TDrawGrid).Canvas do
  begin
     if imgmatrix[ARow,ACol]=1 then Brush.Color:=clRed;
     FillRect(rect);
  end;
end;

Очистка изображения (стирается рисунок на сетке):
procedure TMainForm.BtnClearClick(Sender: TObject);
var i,j:integer;