Halcon图像锐化和图像增强、窗口的相关算子

*图像锐化和图像增强:

•图像锐化:frei_amp ()
•边缘提取算子:edges_image()
•亚像素边缘提取 :edges_sub_pix()
•骨架提取:skeleton()
•图像增强:emphasize()
•图像光照增强:illuminate()
cs 复制代码
*// 获取图像
read_image (Image, 'printer_chip/printer_chip_01')

*// 图像锐化:一般是用于边缘提取,得到图像轮廓
*// Frei-Chen边缘幅值检测(基于Frei-Chen算子的图像锐化/边缘提取)
*// 原理: 通过Frei-Chen卷积核计算图像梯度,输出边缘幅值(锐化后的图像)
*// 参数1: 输入原始灰度图像
*// 参数2: 输出边缘幅值图像(像素值表示边缘强度,值越大边缘越明显)
frei_amp (Image, ImageEdgeAmp)

*// 边缘提取算子
*// 参数1: 输入原始图像
*// 参数2: 输出边缘幅值图像(每个像素的边缘强度)
*// 参数3: 输出边缘方向图像(每个像素的边缘方向,角度值)
*// 参数4: 边缘检测算法('canny'=Canny算法,最常用;还有'sobel'/'roberts'等)
*// 参数5: 高斯平滑sigma值(>0,值越大平滑越强,边缘越少;值越小保留细节但易有噪点)
*// 参数6: 边缘细化方式('nms'=非极大值抑制,仅保留边缘幅值最大的像素,得到单像素宽边缘)
*// 参数7: 低阈值(Canny算法的双阈值之一,低于此值的边缘直接舍弃)
*// 参数8: 高阈值(Canny算法的双阈值之一,高于此值的边缘保留,高低阈值间的边缘需连接到高阈值边缘才保留)
edges_image (Image, ImaAmp, ImaDir, 'canny', 1, 'nms', 20, 40)

*// 清空窗口
dev_clear_window ()

*// 亚像素边缘提取 
* 参数1 Image 输入图像
* 参数2 Edges 输出亚像素边缘轮廓
* 参数3 'canny' 边缘检测算法
* 参数4 1 高斯平滑sigma值
* 参数5 20 低阈值 阈值越高检测到的边缘越少
* 参数6 40 高阈值 阈值越低检测到的边缘越多
* 对比度阈值区间值越高 检测的边缘(轮廓线)越少,反之检测的轮廓线越多
edges_sub_pix (Image, Edges, 'canny', 1, 20, 40)

*// 清空窗口
dev_clear_window ()
edges_sub_pix (Image, Edges, 'canny', 1, 80, 100)

*// 阈值分割
threshold (ImageEdgeAmp, Region, 30, 255)

*// 骨架提取(将边缘区域细化为单像素宽的轮廓线)
*// 原理: 迭代腐蚀区域,直到区域变为单像素宽的骨架,保留区域的拓扑结构
*// 参数1: 输入待细化的区域(阈值分割后的边缘区域)
*// 参数2: 输出骨架区域(单像素宽的边缘轮廓)
skeleton (Region, Skeleton)

*// 清空窗口
dev_clear_window ()
*// 图像增强
*// 先对图像做低通滤波,再用原始图像减去低通图像,增强边缘和细节
*// 参数1: 输入原始图像
*// 参数2: 输出增强后的图像
*// 参数3: 低通掩膜宽度(11,奇数,掩膜越大增强效果越明显)
*// 参数4: 低通掩膜高度(11,奇数,与宽度一致保证各向同性)
*// 参数5: 对比度强度因子(1,>0,值越大对比度增强越显著)
emphasize (Image, ImageEmphasize, 11, 11, 1)

*// 清空窗口
dev_clear_window ()

*// illuminate--图像光照增强(模拟光照效果,提升局部亮度/对比度)
*// 原理: 基于高斯函数模拟光源照射效果,增强图像局部区域的亮度
*// 参数1: 输入原始图像
*// 参数2: 输出光照增强后的图像
*// 参数3: 光源宽度(101,奇数,控制光照影响的横向范围)
*// 参数4: 光源高度(101,奇数,控制光照影响的纵向范围)
*// 参数5: 光照强度(0.7,取值0~1,值越大光照越强,图像越亮)
illuminate (Image, ImageIlluminate, 101, 101, 0.7)

*窗口的相关算子:

•打开一个指定大小的新窗口:dev_open_window ()
•打开一个窗口自适应图像的大小:dev_open_window_fit_image ()
•获取图像大小:get_image_size()
•打开具有给定最小和最大范围的新图形窗口:dev_open_window_fit_size()
•关闭窗口(只关闭一个窗口)dev_close_window ()
•清空内容:dev_clear_window ()
•打开一个文件对话框窗口:dev_open_file_dialog()
cs 复制代码
*// 获取图像
read_image (Image, 'printer_chip/printer_chip_01')
*// 获取当前窗口句柄
dev_get_window (WindowHandle)
    
*// 指定大小打开一个窗口
* 参数1、2 打开的位置
* 参数3、4 打开的大小
* 参数5 WindowHandle1 新窗口的句柄对象
dev_open_window (0, 0, 512, 512, 'black', WindowHandle1)

*// 打开一个窗口 去自适应图像的大小
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle2)
*// 获取图像大小
get_image_size (Image, Width, Height)
*// 显示图片
dev_display (Image)

*// 指定窗口大小去打开一个窗口来展示图像100*100区间的图像
* 打开具有给定最小和最大范围的新图形窗口,以便保留给定图像大小的宽高比
* 参数1:相对于HDevelop窗口的y坐标
* 参数2:相对于HDevelop窗口的x坐标
* 参数3: 图像宽度
* 参数4: 图像高度
* 参数5: 宽度最大值
* 参数6: 高度的最大值
* 参数7: 窗口句柄    
dev_open_window_fit_size (0, 0, 100, 100, -1, -1, WindowHandle3)
get_image_size (Image, Width1, Height1)//获取图像大小
dev_display (Image)//显示图片

*// 打开一个文件对话框窗口
*参数3 打开指定路径下的文件的路径
*参数4  Selection打开文件的路径
dev_open_file_dialog ('read_image', 'default', 'C:/', Selection)

*// 清空内容
dev_clear_window ()

*// 关闭窗口(只关闭一个窗口)
dev_close_window ()

希望对大家有所帮助, 感谢大家的关注和点赞。

相关推荐
彼岸花开了吗7 小时前
构建AI智能体:八十、SVD知识整理与降维:从数据混沌到语义秩序的智能转换
人工智能·python·llm
有一个好名字7 小时前
力扣-小行星碰撞
算法·leetcode·职场和发展
韩师傅7 小时前
前端开发消亡史:AI也无法掩盖没有设计创造力的真相
前端·人工智能·后端
AI大佬的小弟7 小时前
【小白第一课】大模型基础知识(1)---大模型到底是啥?
人工智能·自然语言处理·开源·大模型基础·大模型分类·什么是大模型·国内外主流大模型
lamentropetion7 小时前
E - Equal Tree Sums CF1656E
算法
代码游侠7 小时前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
lambo mercy7 小时前
无监督学习
人工智能·深度学习
阿里巴巴P8资深技术专家7 小时前
基于 Spring AI 和 Redis 向量库的智能对话系统实践
人工智能·redis·spring
Xの哲學8 小时前
Linux Platform驱动深度剖析: 从设计思想到实战解析
linux·服务器·网络·算法·边缘计算