查看: 14|回复: 0

halcon算子

[复制链接]

235

主题

1

回帖

1174

积分

管理员

积分
1174
QQ
发表于 2025-6-8 14:06:02 | 显示全部楼层 |阅读模式
*选择文件
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
*读取图片资源
read_image (Image, Selection)
*转化成RGB格式
decompose3 (Image, R, G, B)
*灰度转换
rgb1_to_gray (Image, GrayImage)
*HSV转换
trans_to_rgb (R, G, B,  H,S, V, 'hsv')



*关闭窗体
dev_close_window ()
*创建新的window窗体
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*手动画一个圆
draw_circle (WindowHandle, Row, Column, Radius)
*实现圆
gen_circle (Circle, Row, Column, Radius)
*计算区域的面积
region_features (Circle, 'area', Value)
*连通域(方便区域组合起来)
connection (Circle, ConnectedRegions)
*筛选连通域中有多少个面积再150-99999
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 150, 99999)





dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)

*转化成灰度图片
rgb1_to_gray (Image, GrayImage)

*获得图像的区域
get_domain (GrayImage, Domain)
*获取区域的灰度值对应的坐标点
get_region_points (Domain, Rows, Columns)
*获取图片尺寸
get_image_size (GrayImage, Width, Height)
*创建一个灰度值的图片
gen_image_const (Image1, 'byte', Width, Height)

*获得图像的灰度
get_grayval (GrayImage, Rows, Columns, Grayval)

*设置图像的灰度
set_grayval (Image1, Rows, Columns, Grayval)

*修改图片的灰度值实现修改图片
for Index := 1 to 100 by 1
    Grayval[Index]:=255
endfor

set_grayval (Image1, Rows, Columns, Grayval)







*矩阵的创建
m:=[1,2,3,4]
create_matrix (2, 2, [1,2,3,4], MatrixID)

*获取值
get_value_matrix (MatrixID, 1, 0, Value)
get_full_matrix (MatrixID, Values)

*矩阵的逆

invert_matrix (MatrixID, 'general', 0, MatrixInvID)
get_full_matrix (MatrixInvID, Values1)

*矩阵的范数
norm_matrix (MatrixInvID, '2-norm', Value1)

*矩阵的创建
A:=[1,5,7,8,9,10]
tuple_length (A, Length)
create_matrix (3, 2, A, MatrixID1)
get_full_matrix (MatrixID1, Values2)




read_image (Image, '素材')
decompose3 (Image, R, G, B)
trans_from_rgb (R, G, B, H, S, V, 'hsv')

*中值滤波
mean_image (H, ImageMean, 3, 3)
*阈值分割
threshold (ImageMean, Region, 0, 60)
*填充
fill_up (Region, RegionFillUp)
*连通域
connection (RegionFillUp, ConnectedRegions)
*筛选
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 8000, 99999)

*显示图片
dev_display (SelectedRegions)
*显示图片
dev_display (Image)

*提取边缘
boundary (SelectedRegions, RegionBorder, 'outer')











*关闭过程更新
dev_update_off ()
*读取图片
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)

*图像转为灰度图
rgb1_to_gray (Image, GrayImage)



*图像相加
add_image (GrayImage, GrayImage, ImageResult, 0.8, 100)

*获得图像区域坐标
get_domain (GrayImage, Domain)
get_region_points (Domain, Rows, Columns)

*获得图像灰度
get_grayval (GrayImage, Rows, Columns, Grayval)

*循环改变值
for i := 0 to |Grayval|-1 by 1
     if (Grayval>100)
         Grayval:=255
     endif
endfor

*灰度赋值
set_grayval (ImageResult, Rows, Columns, Grayval)

*图像取对数 一般是提高低范围的像素,压缩高范围的像素,灰度值
log_image (GrayImage, LogImage, 'e')

*图像取指数 提高高范围,压缩低范围像素,灰度值
exp_image (LogImage, ExpImage, 'e')

*图像均衡化(让图片更加有轮廓感)
equ_histo_image (GrayImage, ImageEquHisto)







《---------------滤波操作-------------------》



dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)

*均值滤波对于模糊图像以及图像内部的噪声具有很好的作用
mean_image (Image, ImageMean, 5,5)

*对单个噪声点具有很好的平滑作用,特别是椒盐噪声
median_image (Image, ImageMedian, 'circle', 7, 'mirrored')

add_noise_white (Image, ImageNoise, 10)
median_image (ImageNoise, ImageMedian1, 'circle', 3, 'mirrored')

*高斯滤波器是一种常用的图像处理技术,用于平滑图像,减少噪声。它通过应用二维离散高斯函数来实现这一点。高斯滤波器在处理高斯噪声方面特别有效。
gauss_filter (ImageNoise, ImageGauss, 5)

* 导向滤波--能很好地保留边缘清晰度
guided_filter (Image, Image, ImageGuided, 3, 20)




《-----------------图像旋转 变换-------------------》


dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
*画矩形
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
*生成矩形
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
*裁剪区域
reduce_domain (Image, Rectangle, ImageReduced)
*求取中心
area_center (Rectangle, Area, Row, Column)
*角度转弧度
tuple_rad (45, Rad)
*放射矩阵计算
vector_angle_to_rigid (Row, Column, 0, Row, Column+50, Rad, HomMat2D)
*图片旋转
affine_trans_image (ImageReduced, ImageAffineTrans, HomMat2D, 'constant', 'false')
*区域旋转
affine_trans_region (Rectangle, RegionAffineTrans, HomMat2D, 'nearest_neighbor')

*直接定义旋转
hom_mat2d_identity (H1)
*求取中心
area_center (Image, Area1, Row3, Column3)
*旋转角度
hom_mat2d_rotate (H1,Rad, Column, Row, HomMat2DRotate)
*执行图像旋转
affine_trans_image (ImageReduced, Aff1ineTrans1, HomMat2DRotate, 'constant', 'false')







《---------------极坐标系转换------------------》

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)

draw_circle (WindowHandle, Row, Column, Radius)
gen_circle (Circle, Row, Column, Radius)
reduce_domain (Image, Circle, ImageReduced)

*

* Image:待转换的图像
*         PolarTransImage:转换后的图像
*         Row:圆弧中心行坐标
*         Column:圆弧中心列坐标
*         AngleStart:要映射到输出图像第一列的光线的角度
*         AngleEnd:要映射到输出图像的最后一列的光线的角度
*         RadiusStart:要映射到输出图像的第一行的圆的半径
*         RadiusEnd:要映射到输出图像的最后一行的圆的半径
*         Width:输出图像的宽度
*         Height:输出图像的高度
*         Interpolation:图像转换的插值算法


*
*极坐标变换
polar_trans_image_ext (ImageReduced, PolarTransImage, Row, Column, 0, 6.28319, 0.5*Radius, Radius, 6.28319*Radius, 200, 'nearest_neighbor')

*极坐标逆变换
polar_trans_image_inv (PolarTransImage, XYTransImage, Row, Column, 0, 6.28319, 0.5*Radius, Radius, 6.28319*Radius, 800, 'nearest_neighbor')












高级模式
B Color Image Link Quote Code Smilies

本版积分规则

关于我们

企业文化

人才招聘

常见问题

建议反馈

合作伙伴

商务合作

新闻媒体

产品服务

客户案例

联系我们

联系电话:14776878570(同VX号)

邮箱:14776878570@163.com(同VX号)

工作时间:周一至周六(早上8点至下午10点)

关注微信公众号

QQ|Archiver|手机版|小黑屋|鸿翔机器人

GMT+8, 2025-6-20 21:44 , Processed in 0.062199 second(s), 18 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

在线客服系统