角点检测算子的代码描述
2008-04-09 04:21:33来源:互联网 阅读 ()
最简单的一种角点检测算子,但是由于采用了非最大化抑制,效果和OpenCV相当。
TPointInfo = record
Info: TPoint;
w: extended;
Color: TLabColor;
end;
TSinglePointInfoArray = array of TPointInfo;
procedure CornerDetect(Width, Height: longint);
var
i, j, fi, fj, sum: longint;
begin
PointCount := 0;
for i := 7 to Width - 8 do
for j := 7 to Height - 8 do begin
sum := 0;
for fi := i - 7 to i 7 do
for fj := j - 7 to j 7 do
sum := sum abs(ImageGray[i, j] - ImageGray[fi, fj]);
ImagePoint[i, j] := sum div $100;
end;
{标准角点检测算子部分}
for i := 7 to Width - 8 do
for j := 7 to Height - 8 do begin
sum := ImagePoint[i, j];
if sum > $20 then begin
WBPoint[i, j] := true;
Inc(PointCount);
for fi := i - 7 to i 7 do begin
for fj := j - 7 to j 7 do
if ImagePoint[fi, fj] > sum then begin
WBPoint[i, j] := false;
Dec(PointCount);
break;
end;
if not WBPoint[i, j] then break;
end;
end else
WBPoint[i, j] := false;
end;
{用非最大化抑制来抑制假角点}
setlength(CornerPoint, PointCount); fi := 0;
for i := 7 to Width - 8 do
for j := 7 to Height - 8 do
if WBPoint[i, j] then begin
CornerPoint[fi].Info.X := i;
CornerPoint[fi].Info.Y := j;
Inc(fi);
end;
{输出为一个点序列}
end;
输入的ImageGray为图像的灰度描述,WBPoint为Boolean数组,ImagePoint为标准角点检测算子运行后的检测值。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash