Здравствуйте программеры. Делаю дипломный проект с видео, скриншотами и детектированием дефектов. Все, вроде бы, получается, но вот проблема, фильтр выделения границ с конволюционной матрицей не выходит. Сделал маленькую прогу, только с фильтром, чтобы выяснить проблему. Но там тоже самое, вместо выделения границ, получается бред какой-то. Вот эта маленькая прога:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, dialogs,
jpeg, DSPack, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,y:integer;
u:PbyteArray;
implementation
{$R *.dfm}
procedure Tform1.button1click (Sender: TObject);
begin
image1.Picture.bitmap.LoadFromFile('d:\123.jpg');
end;
procedure Tform1.button2click (Sender: TObject);
begin
for y:=0 to image1.height-1 do
begin
for x:=0 to image1.width-1 do
begin
Image1.canvas.Pixels[X, Y]:=
(((-1)*Image1.canvas.Pixels [x-1,y+1])+
((-1)*Image1.canvas.Pixels[x,y+1])+
((-1)*Image1.canvas.Pixels[x+1,y+1])+
((-1)*Image1.canvas.Pixels[x-1,y])+
((8)*Image1.canvas.Pixels[x,y])+
((-1)*Image1.canvas.Pixels[x+1,y])+
((-1)*Image1.canvas.Pixels[x-1,y-1])+
((-1)*Image1.canvas.Pixels[x,y-1])+
((-1)*Image1.canvas.Pixels[x+1,y+1])) div 1+128;
end;
end;
end;
end.
Подскажите, что не так, а то всю голову уже сломал себе...
