Halcon算子应用和技巧5

提示:若没有查找的算子,可以评论区留言,会尽快更新


前言

提示:可以使用搜索小工具搜索对应算子名称:

本篇博文主要用于记录学习Halcon中算子的应用场景,及其使用代码和图像展示。只讲通俗易懂使用方法,不讲原理,不讲原理,不讲原理,重要的事情说三遍。


提示:以下是本篇文章正文内容,下面案例可供参考,注意参数坐标的使用,能帮助你理解算子

一、Halcon应用?

Halcon 是一个强大的图像处理工具,该工具是为了解决机器视觉项目任务而创建的。

二、算子汇总

每一博文仅展示10个算子,点击此链接进行查询所有算子,并点击对应算子跳转相应博文。'
跳转链接

三、应用算子

41. rank_rect()

先上代码:

read_image(Image, 'printer_chip/printer_chip_01')
rank_rect(Image, ImageRank, 15, 15,35)

解析
秩序值滤波:将区域15*15范围内的灰度值排序,选择第35位灰度值作为滤波后结果
PS:容易看到块状的像素
在这里插入图片描述


42. erosion_circle()

先上代码:

read_image (Image, 'data/board')
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Region, 100, 255)
erosion_circle (Region, RegionErosion, 7.5)

解析
区域腐蚀作用,将区域收缩变小;原本区域中小的孔洞变大,右下角两块凹陷区域也向里面收缩。
PS:一般用于处理区域边缘毛刺;将有粘连的区域进行断开
在这里插入图片描述


43. dilation_circle ()

先上代码:

read_image (Image, 'data/board')
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Region, 100, 255)
erosion_circle (Region, RegionErosion, 7.5)
erosion_circle (RegionErosion, RegionErosion2, 6.5)
erosion_circle (RegionErosion2, RegionErosion3, 5.5)
*膨胀操作
dilation_circle (RegionErosion3, RegionDilation, 23.5)

解析
使得区域进行扩张
PS:一般用于填充区域中的孔洞
在这里插入图片描述


44. opening()

先上代码:

*读取待检测的图像
read_image (Image,'data/board') 
*将图像转换为单通道的灰度图像
rgb1_to_gray(Image, GrayImage)
*创建矩形区域
gen_rectangle1 (Rectangle, 259, 87, 957, 909)
*进行裁剪,将感兴趣区域单独提取出来
reduce_domain (GrayImage, Rectangle, ImageReduced)
*使用阈值处理将灰度值于设定的像素选取出来
threshold(ImageReduced,Light,85,255)
*创建圆形结构元素,用于开运算
gen_circle(StructElement,6,6,7)
*进行开运算去除背景中的杂点
opening(Light,StructElement,Large)

解析
去除背景中的杂点,同时保留主体区域不变,观察两张图的边缘处的变化
PS:去除杂点,多余小的区域
在这里插入图片描述


45. closing()

先上代码:

read_image (Image,'data/shapes')
*将图像进行通道分解,分别转换为三个通道的RGB图像
*对饱和度通道的图像进行阈值处理
threshold (Image, Regions, 180, 255)
*创建圆形结构元素用于闭运算
gen_circle(StructElement,10,10,10)
*对图像中较亮的区域进行闭运算处理,填补了各自轮廓中的小空隙
closing(Regions,StructElement,Large)

解析
填补了各自轮廓中的小空隙,同时保留主体区域完整的大致形状不变,观察两张图的变化,黑色区域被填充,整体矩形形状保持
在这里插入图片描述


46. add_image()

先上代码:

read_image(Image, 'printer_chip/printer_chip_01')
read_image(Image1, 'D:/HALCON_learn/理论/31-40/明暗变化.jpg')
rgb1_to_gray(Image1, GrayImage)
gen_rectangle1(Rectangle, 280,367, 711, 894)
reduce_domain(GrayImage, Rectangle, ImageReduced)
reduce_domain(Image, Rectangle, ImageReduced1)
crop_domain(ImageReduced, ImagePart)
crop_domain(ImageReduced1, ImagePart1)
add_image(ImagePart, ImagePart1, ImageResult, 0.5, 0)

解析
对两张图像的对应位置的灰度值相加,相加的最终灰度值和后面参数有关,算子计算方式很简单
PS:要求两张图像的通道数量和尺寸大小一致
在这里插入图片描述


47. mirror_image()

先上代码:

read_image(Image, 'printer_chip/printer_chip_01')
mirror_image(Image, ImageMirror, 'column')

解析
图像镜像,镜像轴参考白色线
在这里插入图片描述


48. rotate_image()

先上代码:

read_image(Image, 'D:/HALCON_learn/理论/31-40/明暗变化.jpg')
rotate_image(Image, ImageRotate, 90, 'constant')

解析
图像逆时针按照设定的角度围绕图像中心进行旋转;我画的并没有完整对齐90,可以忽略,理解就行,哈哈
在这里插入图片描述


49. scale_image ()

先上代码:

read_image(Image, 'printer_chip/printer_chip_01')
rgb1_to_gray(Image, GrayImage)
min_max_gray(GrayImage, GrayImage, 0, Min, Max, Range)
scale_image (GrayImage, ImageScaled, 3.69565, -33)
min_max_gray(ImageScaled, ImageScaled, 0, Min1, Max1, Range1)
scale_image_max (GrayImage, ImageScaleMax)
min_max_gray(ImageScaleMax, ImageScaleMax, 0, Min2, Max2, Range2)

解析
作用图像增强,一种线性增强方式,其后两个参数可以使用灰度直方图进行确定,观察箭头所指的,就可以得到你想要的结果
PS:使用灰度直方图方便确定参数,并可以预览该算子的结果
PS:注意和scale_image_max ()区别,观察二者灰度变化
在这里插入图片描述


50. zoom_image_size()

先上代码:

read_image (Image, 'printer_chip/printer_chip_01')
get_image_size(Image, Width, Height)
zoom_image_size(Image, ImageZoom, 1100, 512, 'constant')
get_image_size (ImageZoom, Width1, Height1)

解析
将图像按照不同的模式进行缩放到指定尺寸
在这里插入图片描述


以上内容陆续更新。。。

内容如有错误之处,望不吝指出,谢谢

以上内容陆续更新。。。

  • 26
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值