Halcon 图片分割 米粒分水岭(高斯滤波,区域距离计算,分水岭处理)

资源:

链接:https://pan.baidu.com/s/1kmxdMk67E-7QCsG5mKnc7A
提取码:555s

图片

请添加图片描述

代码

* 1.读取并显示图片 *************************************
dev_close_window ()
read_image (Image, './img.png')
get_image_size (Image, Width, Height)
dev_open_window_fit_size (0, 0, Width, Height, -1, -1, WindowHandle)
dev_display (Image)

set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_draw ('margin')

dev_set_line_width (3)
* 2.预处理图片 *****************************************
rgb1_to_gray (Image, GrayImage)
gauss_filter (GrayImage, ImageGauss, 5)

* 3.连通域分析 *****************************************
mean_image (ImageGauss, ImageMean, 9, 9)
dyn_threshold (ImageGauss, ImageMean, RegionDynThresh, 5, 'light')
connection (RegionDynThresh, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 30, 99999)

* 4.形态学处理与分水岭处理 *****************************************
fill_up (SelectedRegions, RegionFillUp)
dilation_circle (RegionFillUp, RegionDilation, 1.5)
erosion_circle (RegionDilation, RegionErosion, 1.5)

get_image_size (ImageGauss, Width1, Height1)
* 区域距离换算
distance_transform (RegionErosion, DistanceImage, \
                    'city-block', 'true', Width1, Height1)
* 比例放大
scale_image_max (DistanceImage, ImageScaleMax)
* 图片反色
invert_image (ImageScaleMax, ImageInvert)

* 分水岭处理
watersheds_threshold (ImageInvert, Basins, 150)

* 5.二值化获取 米粒区域 ******************************************
dev_set_draw ('margin')
threshold (ImageInvert, Region, 0, 254)
connection (Region, ConnectedRegions1)
area_center (ConnectedRegions1, Area, Row, Column)


* 6.米粒区域与分水岭结果使用 ******************************************
union1 (ConnectedRegions1, RegionUnion)
sort_region (Basins, SortedRegions, 'upper_left', 'true', 'row')

count_obj (Basins, Number)
for Index := 1 to Number  by 1
    select_obj (SortedRegions, ObjectSelected, Index)
    intersection (ObjectSelected, RegionUnion, RegionIntersection)
    dev_clear_window ()
    dev_display (Image)
    dev_display (RegionIntersection)
    
*     stop()
endfor

* 7.显示粘连分割结果  **********************************************
select_obj (SortedRegions, ObjectSelected1, 15)
intersection (ObjectSelected1, RegionUnion, RegionLeft)
select_obj (SortedRegions, ObjectSelected2, 16)
intersection (ObjectSelected2, RegionUnion, RegionRight)
dev_clear_window ()
dev_display (Image)
dev_set_color ('red')
dev_display (RegionLeft)
dev_set_color ('blue')
dev_display (RegionRight)

结果

请添加图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷益--飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值