提示:若没有查找的算子,可以评论区留言,会尽快更新
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)
解析
将图像按照不同的模式进行缩放到指定尺寸
以上内容陆续更新。。。
内容如有错误之处,望不吝指出,谢谢
以上内容陆续更新。。。