halcon学习之图像分割

同样大家看看原理和halcon的说明文档,这里推荐一本书叫做《机器视觉算法原理与编程实践》,我是跟着这个学的,感觉不难学习,然后就可以看大量的官方例程了

*1.基于直方图的自动阈值分割方法
read_image (Image, 'F:/机器视觉/Halcon机器视觉算法原理与编程实战/code/code/data/shapes')
rgb1_to_gray (Image, GrayImage)
auto_threshold (GrayImage, Regions, 8)
*画直方图
gray_histo (GrayImage, GrayImage, AbsoluteHisto, RelativeHisto)
*平滑前的直方图
gen_region_histo (Region, AbsoluteHisto, 255, 15, 1)
create_funct_1d_array (AbsoluteHisto, Function)
smooth_funct_1d_gauss (Function, 8.0, SmoothedFunction)
dev_set_color ('red')
*平滑后的直方图,平滑的目的主要是减少波峰,便于得到图像边缘
funct_1d_to_pairs (SmoothedFunction, XValues, YValues)
gen_region_histo (Histo2, YValues, 255, 255, 1)

*2.自动全局阈值分割
read_image (Image1, 'F:/机器视觉/Halcon机器视觉算法原理与编程实战/code/code/data/codes')
rgb1_to_gray (Image1, GrayImage1)
binary_threshold (GrayImage1, Region1, 'max_separability', 'dark', UsedThreshold)

 

*3.局部阈值分割
read_image (Image2, 'F:/机器视觉/Halcon机器视觉算法原理与编程实战/code/code/data/text')
rgb1_to_gray (Image2, GrayImage2)
*因为对比度较低,因此使用图像相乘,增强对比度
mult_image (GrayImage2, GrayImage2, ImageResult, 0.005, 0)
*使用平滑滤波器对原始图像进行适当的平滑
mean_image (ImageResult, ImageMean, 50, 50)
*动态阈值分割,提取字符区域
dyn_threshold (ImageResult, ImageMean, RegionDynThresh, 4, 'not_equal')
*开运算
opening_circle (RegionDynThresh, RegionOpening, 1.5)

*再举一个例子
read_image (Image3, 'F:/机器视觉/Halcon机器视觉算法原理与编程实战/code/code/data/garlic')
rgb1_to_gray (Image3, GrayImage3)

*先平滑一下
mean_image (GrayImage3, ImageMean1, 30, 30)

*动态阈值分割,然后提取
dyn_threshold (GrayImage3, ImageMean1, RegionDynThresh1, 30, 'not_equal')

*腐蚀
erosion_circle (RegionDynThresh1, RegionErosion, 1.5)

 

*其他阈值分割方法
*var_threshold
read_image (Image4, 'F:/机器视觉/Halcon机器视觉算法原理与编程实战/code/code/data/holes')
rgb1_to_gray (Image4, GrayImage4)
var_threshold (GrayImage4, Region2, 15, 15, 0.2, 32, 'dark')

char_threshold (GrayImage4, Region2, Characters, 2, 95, Threshold)
dual_threshold (GrayImage4, RegionCrossings, 20, 5, 2)

 

 

*2.区域生长法,该算法主要是通过相似区域的相连区域,以此找到符合条件的像素点集合,因此需要现在图像中选择一个种子点的像素
*以此种子的领域开始搜索,符合条件就添加进来,,最终代表同一个物体就在同一个种子区域了
*主要算子为regiongrowing
read_image (Image5, 'F:/机器视觉/Halcon机器视觉算法原理与编程实战/code/code/data/village')
mean_image (Image5, ImageMean2, 5, 5)
regiongrowing (ImageMean2, Regions1, 1, 1, 3, 100)
closing_circle (Regions1, RegionClosing, 3.5)
connection (RegionClosing, ConnectedRegions)
*regiongrowing_mean算子
*和上面的不同是需要输入的均值后的图像
read_image (Image5, 'F:/机器视觉/Halcon机器视觉算法原理与编程实战/code/code/data/village')
median_image (Image5, ImageMedian, 'circle', 2, 'mirrored')
*先通过regiongrowing粗略定位种子区域,然后使用regiongrowing_mean在细节分割
regiongrowing (ImageMedian, Regions1, 1, 1, 3, 100)
closing_circle (Regions1, RegionClosing, 3.5)
shape_trans (RegionClosing, RegionTrans, 'inner_circle')
connection (RegionTrans, ConnectedRegions)
area_center (ConnectedRegions, Area, Row, Column)
regiongrowing_mean (ImageMedian, Regions2, Row, Column, 25, 100)

 

*3.分水岭算法
read_image (Image, 'F:/机器视觉/Halcon机器视觉算法原理与编程实战/code/code/data/woodboard')
rgb1_to_gray (Image, GrayImage)
gauss_filter (GrayImage, ImageGauss, 11)
watersheds (ImageGauss, Basins, Watersheds)
watersheds_threshold (ImageGauss, Basins1, 50)

Halcon是一种高级机器视觉库,它主要用于图像处理、特征检测和识别等任务。如果想要将一张图像分割成两张,Halcon提供了多种方法来实现这个功能,通常可以考虑以下几个步骤: 1. **选择合适的分割方法**:Halcon支持边缘检测、区域生长、模板匹配等技术来划分图像。比如,你可以通过找到图像的一条特定边界线(例如图像中心线)来进行水平分割。 2. **设置分割条件**:确定好分割依据后,需要设置相应的阈值或搜索参数,以便Halcon能够准确地找到分割点。 3. **应用操作**:在Halcon中,可以使用`find_edges`函数查找边缘,`region_grow`函数进行区域生长,或者创建自定义的模板匹配算子来寻找指定区域。 4. **图像切割**:一旦找到分割点,可以使用`image_get_sub_image`函数从原始图像中提取出两个部分。 下面是一个简化的Python示例(假设我们已经有了图像处理模块的上下文): ```python from halcon import hapi # 加载图像 img = hapi.load_image("your_image.jpg") # 使用Halcon找寻分割线 edges = img.find_edges() # 分割图像 height = img.get_height() width = img.get_width() center_point = (width // 2, height // 2) # 假设要从中心分割 top_half = img.get_sub_image(0, 0, center_point[0], height) bottom_half = img.get_sub_image(center_point[0], 0, width, height) # 存储或显示结果 hapi.save_image("top_half.jpg", top_half) hapi.save_image("bottom_half.jpg", bottom_half) ``` 请注意,实际操作可能会因图像内容和需求的不同而调整。如果你有具体的分割规则,比如使用特定的特征点或颜色阈值,你需要相应地调整代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值