* 此示例程序显示了如何使用edges_color以及如何使用只能从彩色图像
中提取一些边缘的图像来使用edges_color和edges_image的输出之间的
差异。
dev_update_off ()
read_image (Image, 'olympic_stadium')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_part (0, 0, Height - 1, Width - 1)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)
Message := 'Color image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
*将彩色图像转换为灰度图像。 注意,在足球场和灰度值图像中的轨迹之
间没有对比度。
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
Message := 'Gray value image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
*在没有非最大抑制和滞后阈值的情况下计算彩色边缘,即原始边缘幅度
图像。 注意,在足球场和彩色边缘图像中的赛道之间有一个清晰可见的
边缘。
edges_color (Image, ImaAmp, ImaDir, 'canny', 1, 'none', -1, -1)
dev_display (ImaAmp)
Message := 'Color edge image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
*在没有非最大抑制和滞后阈值的情况下计算灰度值边缘,即原始边缘幅
度图像。 注意,在足球场和灰度值边缘图像中的轨道之间没有可见边
缘。
edges_image (GrayImage, ImaAmpGray, ImaDirGray, 'canny', 1, 'none', -1, -1)
dev_display (ImaAmpGray)
Message := 'Gray value edge image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
*现在执行颜色边缘提取,包括非最大抑制和滞后阈值。 注意足球场和赛
道之间的分段边缘。
edges_color (Image, ImaAmpHyst, ImaDirHyst, 'canny', 1, 'nms', 20, 40)
threshold (ImaAmpHyst, RegionColor, 1, 255)
skeleton (RegionColor, EdgesColor)
dev_display (Image)
dev_set_color ('blue')
dev_display (EdgesColor)
Message := 'Segmented color edges'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
*现在执行包括非最大值在内的灰度值边缘提取抑制和磁滞阈值。
注意足球场和赛道之间没有边缘。
edges_image (GrayImage, ImaAmpGrayHyst, ImaDirGrayHyst, 'canny', 1, 'nms', 20, 40)
threshold (ImaAmpGrayHyst, RegionGray, 1, 255)
skeleton (RegionGray, EdgesGray)
dev_display (GrayImage)
dev_set_color ('blue')
dev_display (EdgesGray)
Message := 'Segmented gray value edges'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
*现在再次显示所有内容,而只显示图像中包含足球场和跑道的部分。
Row1 := 220
Col1 := 215
Row2 := 399
Col2 := 489
dev_set_part (Row1, Col1, Row2, Col2)
dev_display (Image)
stop ()
dev_display (GrayImage)
stop ()
dev_display (ImaAmp)
stop ()
dev_display (ImaAmpGray)
stop ()
dev_display (Image)
dev_set_color ('blue')
dev_display (EdgesColor)
stop ()
dev_display (GrayImage)
dev_set_color ('blue')
dev_display (EdgesGray)