提示:若没有查找的算子,可以评论区留言,会尽快更新
Halcon算子应用和技巧6
前言
提示:可以使用搜索小工具搜索对应算子名称:
本篇博文主要用于记录学习Halcon中算子的应用场景,及其使用代码和图像展示。只讲通俗易懂使用方法,不讲原理,不讲原理,不讲原理,重要的事情说三遍。
提示:以下是本篇文章正文内容,下面案例可供参考,注意参数坐标的使用,能帮助你理解算子
一、Halcon应用?
Halcon 是一个强大的图像处理工具,该工具是为了解决机器视觉项目任务而创建的。
二、算子汇总
每一博文仅展示10个算子,点击此链接进行查询所有算子,并点击对应算子跳转相应博文。'
【跳转链接】
三、应用算子
51. polar_trans_image_ext()
先上代码:
read_image (Image, 'D:/HALCON_learn/理论/51-60/瓶盖.jpg')
dev_close_window()
get_image_size(Image, Width, Height)
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
dev_display(Image)
gen_circle(Circle, 193, 195, 120)
gen_circle(Circle1, 193, 195, 70)
difference(Circle, Circle1, RegionDifference)
dev_open_window(0, 0, 700, 60, 'black', WindowHandle1)
polar_trans_image_ext(Image, PolarTransImage, 193, 195,0 , rad(180), 70, 120, 700, 60, 'bilinear')
rotate_image(PolarTransImage, ImageRotate, 180, 'constant')
解析
涉及极坐标转换,该算子将弧形区域的图像拉伸成矩形图像;方便展示仅做了上面180度的区域图像拉伸,结果参考最下面的图
PS:一般字符OCR会用到该算子,方便OCR检测
52. gray_dilation_rect()
先上代码:
read_image (Image, 'D:/HALCON_learn/理论/51-60/瓶盖.jpg')
rgb1_to_gray (Image, GrayImage)
* 图像灰度形态学
gray_dilation_rect(GrayImage, ImageMax, 5,5)
解析
灰度膨胀:在一个矩形蒙版框内选择该区域内灰度最大的值替换区域中心的灰度值
PS:回忆一下秩序值滤波原理,看它们之间有何区别
53. gray_erosion_rect()
先上代码:
read_image (Image, 'D:/HALCON_learn/理论/51-60/瓶盖.jpg')
rgb1_to_gray (Image, GrayImage)
* 图像灰度形态学
gray_erosion_rect(GrayImage, ImageMin, 11, 11)
解析
灰度腐蚀:在一个矩形蒙版框内选择该区域内灰度最小的值替换区域中心的灰度值
PS:回忆一下秩序值滤波原理,看它们之间有何区别
54. gray_histo()
先上代码:
read_image(Image, 'D:/HALCON_learn/理论/51-60/瓶盖.jpg')
rgb1_to_gray (Image, GrayImage)
*也可以将区域作为输入,以图像作为输入就是整幅图
gray_histo(GrayImage, GrayImage, AbsoluteHisto, RelativeHisto)
解析:
生成灰度直方图:
绝对直方图:是指图像内0-255灰度值出现的次数
相对直方图:将上面的出现次数转化为频率,总和为1
55. intensity()
先上代码:
read_image(Image, 'D:/HALCON_learn/理论/51-60/瓶盖.jpg')
rgb1_to_gray (Image, GrayImage)
gen_rectangle1(Rectangle, 188,141, 245,237)
intensity(Rectangle, GrayImage, Mean, Deviation)
解析:
计算灰度图像某一区域内的灰度均值和方差
56. select_gray()
先上代码:
read_image(Image, 'D:/HALCON_learn/理论/51-60/瓶盖.jpg')
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Region, 150, 250)
connection(Region, ConnectedRegions)
select_gray(ConnectedRegions, GrayImage, SelectedRegions, 'mean', 'and', 160, 180)
解析:
根据灰度特征筛选区域。类似select_shape();筛选出灰度均值范围在160-180的灰度区域,也可以使用方差筛选
PS:参考案例cristal.hdev
57. gen_circle_contour_xld()
先上代码:
read_image (Image, 'D:/HALCON_learn/理论/51-60/瓶盖.jpg')
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
gen_image_proto (Image, ImageCleared, 125)
draw_circle(WindowHandle, Row, Column, Radius)
gen_circle(Circle, Row, Column, Radius)
*tuple_deg (3.14, Deg)
gen_circle_contour_xld(ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)
解析
生成指定半径,位置的圆形(或者半圆,根据参数设定形成)轮廓
PS:根据参数起始角度和终止角度可以设定形成轮廓的范围,自行尝试
58. get_contour_xld()
先上代码:
read_image (Image, 'D:/HALCON_learn/理论/51-60/瓶盖.jpg')
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
gen_image_proto (Image, ImageCleared, 125)
draw_circle(WindowHandle, Row, Column, Radius)
gen_circle(Circle, Row, Column, Radius)
*tuple_deg (3.14, Deg)
gen_circle_contour_xld(ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)
get_contour_xld(ContCircle, Row1, Col)
解析
继算子57,该算子用于展示形成轮廓的参数值,从结果中得知,轮廓由很多点组成
59. gen_cross_contour_xld ()
先上代码:
read_image (Image, 'D:/HALCON_learn/理论/51-60/瓶盖.jpg')
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
gen_image_proto (Image, ImageCleared, 125)
draw_circle(WindowHandle, Row, Column, Radius)
gen_circle(Circle, Row, Column, Radius)
*tuple_deg (3.14, Deg)
gen_circle_contour_xld(ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)
get_contour_xld(ContCircle, Row1, Col)
gen_cross_contour_xld (Cross, Row1, Col, 1, 0.5)
解析
在轮廓的点处生成交叉形状的XLD轮廓标识
PS:交叉形状可以通过参数调整大小和角度
60. tuple_deg / rad ()
先上代码:
tuple_deg (3.14159, Deg)
x := rad(180)
解析
将弧度转为角度值,该算子执行后,得到 Deg=180;rad(360)与之相反,将角度转为弧度,x = 3.14159。
以上内容陆续更新。。。
内容如有错误之处,望不吝指出,谢谢
以上内容陆续更新。。。