Marr边缘检测算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8.Marr边缘检测算法

procedure TImageProcessForm.MarrClick(Sender: TObject);

var

i,j:integer;

p1,p2,p3,p4,p5,p:pByteArray;

begin

self.DoubleBuffered := true; //采用双缓冲模式

TestBMP.Assign(WillbeChangedBmp);

ProcessedBmp.Assign(WillbeChangedBmp);

for j:=2 to TestBMP.Height-3 do

begin

p:=TestBMP.ScanLine[j];

p1:=ProcessedBmp.ScanLine[j-2];

p2:=ProcessedBmp.ScanLine[j-1];

p3:=ProcessedBmp.ScanLine[j];

p4:=ProcessedBmp.ScanLine[j+1];

p5:=ProcessedBmp.ScanLine[j+2];

for i:=2 to TestBMP.Width-3 do

begin

p[i*3]:=min(255,max(0,(

-2*p1[(i-2)*3]-4*p1[(i-1)*3]- 4*p1[i*3]-4*p1[(i+1)*3]-2*p1[(i+2)*3]

-4*p2[(i-2)*3] + 8*p2[i*3] -4*p2[(i+2)*3]

-4*p3[(i-2)*3]+8*p3[(i-1)*3]+24*p3[i*3]+8*p3[(i+1)*3]-4*p3[(i+2)*3]

-4*p4[(i-2)*3] + 8*p4[i*3] -4*p4[(i+2)*3]

-2*p5[(i-2)*3]-4*p5[(i-1)*3]- 4*p5[i*3]-4*p5[(i+1)*3]-2*p5[(i+2)*3])

));

p[i*3+1]:=min(255,max(0,(

-2*p1[(i-2)*3+1]-4*p1[(i-1)*3+1]-4*p1[i*3+1]-4*p1[(i+1)*3+1]-2*p1[(i+2)*3+1]

-4*p2[(i-2)*3+1]+8*p2[i*3+1]-4*p2[(i+2)*3+1]

-4*p3[(i-2)*3+1]+8*p3[(i-1)*3+1]+24*p3[i*3+1]+8*p3[(i+1)*3+1]-4*p3[(i+2)*3+1]

-4*p4[(i-2)*3+1]+8*p4[i*3+1]-4*p4[(i+2)*3+1]

-2*p5[(i-2)*3+1]-4*p5[(i-1)*3+1]-4*p5[i*3+1]-4*p5[(i+1)*3+1]-2*p5[(i+2)*3+1])

));

p[i*3+2]:=min(255,max(0,(

-2*p1[(i-2)*3+2]-4*p1[(i-1)*3+2]-4*p1[i*3+2]-4*p1[(i+1)*3+2]-2*p1[(i+2)*3+2]

-4*p2[(i-2)*3+2]+8*p2[i*3+2]-4*p2[(i+2)*3+2]

-4*p3[(i-2)*3+2]+8*p3[(i-1)*3+2]+24*p3[i*3+2]+8*p3[(i+1)*3+2]-4*p3[(i+2)*3+2]

-4*p4[(i-2)*3+2]+8*p4[i*3+2]-4*p4[(i+2)*3+2]

-2*p5[(i-2)*3+2]-4*p5[(i-1)*3+2]-4*p5[i*3+2]-4*p5[(i+1)*3+2]-2*p5[(i+2)*3]+2)

));

end;

end;

ChangedBmp.Assign(TestBMP);

ShowChangedBmp;

end;

相关文档
最新文档