HALCON示例程序dem_trees.hdev提取树
示例程序源码(加注释)
- 关于显示类函数解释
dev_close_window ()
read_image (Mreut, ‘mreut_y’)
read_image (MreutDem, ‘mreut_dgm_2.0’)
get_image_size (Mreut, Width, Height)
dev_open_window (0, 0, Width, Height, ‘black’, WindowHandle)
get_system (‘clip_region’, Information)
set_system (‘clip_region’, ‘false’)
dev_set_draw (‘margin’)
dev_set_color (‘red’) - texture_laws - 使用Laws纹理过滤器过滤图像。
- texture_laws(输入图像:纹理变换图像:滤波器,减少灰度值,掩膜大小 ?
texture_laws (Mreut, ImageTexture, ‘ee’, 2, 5) - median_separate - 使用两个分离的矩形进行中值滤波。
- median_separate(图片:中值滤波后图像:掩膜宽度,掩膜高度,边界处理方式 ?
median_separate (ImageTexture, ImageSMedian, 25, 25, ‘mirrored’) - 二值化
threshold (ImageSMedian, TexturedRegion, 30, 255)
dev_display (Mreut)
dev_display (TexturedRegion)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop () - scale_image_max - 将图像缩放到字节图像的最大值范围内的最大灰度值
- scale_image_max(图像:最大灰度值 ::)
scale_image_max (MreutDem, ImageScaleMax) - dual_rank - 用圆形或矩形蒙版对图像灰度进行非线性变换开运算、均值、闭运算。
- dual_rank(图片:变换后的图像:掩膜类型,半径,滤波器模式,边界处理方式 ?
dual_rank (ImageScaleMax, ImageRank, ‘circle’, 15, 10, ‘mirrored’) - 两图像相减
sub_image (ImageScaleMax, ImageRank, ImageSubRank, 1, 0) - 二值化
threshold (ImageSubRank, High, 5, 255) - zoom_region - 缩放区域。
- zoom_region(原始区域:缩放后区域:宽度比例,高度比例:)
zoom_region (High, HighLarge, 8, 8) - 移动区域
move_region (HighLarge, HighLargeMoved, -250, -600) - 用一个矩形元素剪辑区域
clip_region (HighLargeMoved, HighClipped, 0, 0, 511, 511) - 二值化
threshold (Mreut, Dark, 0, 130) - 求交集
intersection (TexturedRegion, Dark, RegionIntersection) - 填充孔洞
fill_up (RegionIntersection, RegionFillUp) - 分割连通域
connection (RegionFillUp, ConnectedRegions) - 使用面积进行筛选
select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 250, 10000000) - 使用圆形元素进行闭运算
closing_circle (SelectedRegions, TexureAndHigh, 2.5)
dev_display (Mreut)
dev_display (TexureAndHigh)
set_system (‘clip_region’, Information)
处理思路
这个例子比较复杂,我还没有研究透彻,持续更新吧。但是使用到了一些算子还是收获比较大。texture_laws 、median_separate 、dual_rank、zoom_region等算子。
后记
大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。