二. 常用算子
1. edges_image(Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )
利用Deriche, Lanser, Shen, or Canny filters提取图像边缘,输出为边缘幅值和方向图像。
2. count_obj(Objects : : : Number)
计算Object的个数。
3.split_skeleton_lines(SkeletonRegion : : MaxDistance : BeginRow, BeginCol, EndRow, EndCol)
分离出一个像素宽,没有分支的线,并返回线段的起始点图像坐标。
4. gen_contour_polygon_xld( : Contour : Row, Col : )
从给定数组中产生多边形轮廓。
5. concat_obj(Objects1, Objects2 : ObjectsConcat : : )
把两个图像数组合并在一起ObjectsConcat = [Objects1,Objects2]
三.例子:
* edge_segments.hdev: extracting connected edges segments
dev_update_off ()
dev_close_window ()
* ****
* step: acquire image //获取图像//
* ****
read_image (Image, 'mreut')
get_image_size (Image, Width, Height)
dev_open_window_fit_image (Image, 0, 0, Width, Height, WindowID)
set_display_font (WindowID, 12, 'Courier', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (3)
dev_display (Image)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* step: filter image
* ****
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 20, 40)
dev_display (ImaAmp)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* step: extract edges
* ****
threshold (ImaAmp, Region, 1, 255) //将幅值图像阈值化//
connection (Region, ConnectedRegions) //连接区域//
dev_clear_window ()
dev_set_colored (12)
dev_display (ConnectedRegions)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* step: process edges
* ****
dev_clear_window ()
count_obj (ConnectedRegions, Number)
gen_empty_obj (XLDContours) //产生一个空数组//
for i := 1 to Number by 1 //将轮廓分割成单像素无分支线段,并根据分割结果生成多边形轮廓//
endfor
dev_display (XLDContours)

2万+

被折叠的 条评论
为什么被折叠?



