delphi中怎麼才能實現圖像角點檢測? |
|
lonelysniper
一般會員 發表:2 回覆:0 積分:0 註冊:2006-10-12 發送簡訊給我 |
小弟寫的程式中需要自動獲得bmp文件中正方形各角點.請問在delphi中怎麼實現呢?
btw: Intel公司有一開源的軟件Opencv可以做到,但opencv是用c 開發的,且提供的接口也是c 的.小弟苦于不會使用c ,所以轉換起來比較困難,哪位大大有空時能給我將opencv中的角點檢測轉換為dll嗎? 另外從网絡上搜尋" delphi角點 "也有相關的源代碼,可惜都不完整,不知哪位大大手頭上有完整的使用delphi檢測角點的源代碼可分享? 貼一段网絡上搜尋到的代碼: 最简单的一种角点检测算子,但是由于采用了非最大化抑制,效果和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为标准角点检测算子运行后的检测值。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |