图 5 . 1 : M i c h e l
图表的部分 页
.
如果直接使用属性清单而非编程,任务会变得很简单。可惜由于语言的含糊,这是不可能的。所
以你需要建构具有精确的语法和语义的语言,尽可能接近非正式的描述。使用 HDevelop 语法,
一个通常的程序看起来如下:
dev_close_window ()
read_image (Catalog, ’swiss1.tiff’)
get_image_pointer1 (Catalog, Pointer, Type, Width, Height)
dev_open_window (0 , 0 , Width/2, Height/2, ’black’, WindowID)
dev_set_part ( 0, 0 , Height-1, Width-1)
dev_set_draw (’f i l l’)
threshold (Catalog, Dark, 0, 110)
dev_set_colored (6)
connection (Dark, ConnectedRegions) f i l l _ u p
(ConnectedRegions, RegionFillUp) select_shape
(RegionFillUp, StampCandidates, ’area’,
’and’, 10000, 200000)
select_shape (StampCandidates, Stamps,
’compactness’, ’and’, 1 , 1.5)
smallest_rectangle1 (Stamps, Row1, Column1, Row2, Column2)
dev_display (Catalog)
dev_set_draw (’margin’)
dev_set_line_width (3)
disp_rectangle1 (WindowID, Row1, Column1, Row2, Column2)
由于一些为止的操作符合不熟悉的语法,这个程序咋看起来会很晦涩。但如果仔细看一下这个操
作符,你就会注意以下说明的直接联系。
th r e s h ol d 选择全部图像像素黑暗比值。
connection 合并所有选定像素触摸相互连通区。
s e le c t s h a p e 选择区域面积(属性:'面积')在指定区间内。
s ma l l e s tr e c t a n g l e 1 计算每个区域的坐标(连续/栏)的包围矩形。
一旦用户熟悉了承操作符和语法、转换就变得很容易。特别需要指出,对于程序来说,图像或者
加工区是否被处理并不重要,你可以使用相同的方法处理他们。. 由于中间数据结构的内存管理
对用户来说是透明的,你可以不必理会它,你可以集中解决图像分析任务。
- 1
- 2
前往页