Показать сообщение отдельно
  #1  
Старый 13.04.2012, 15:15
Sk1f Sk1f вне форума
Прохожий
 
Регистрация: 06.02.2012
Сообщения: 5
Репутация: 10
Восклицание Не получается фильтр для изображений...

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

Код:
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.


Подскажите, что не так, а то всю голову уже сломал себе...
Ответить с цитированием