分类 Halcon 下的文章

概念

XLD-亚像素精度轮廓
平移变换、刚体变换(欧式变换)、相似变换、仿射变换、投影变换(单应性变换)
Snipaste_2025-01-05_20-55-52.png

常用算子

rgb1_to_gray(Image,ImageGray) // 图像灰度化

图像插值

最近邻插值-nearest
Snipaste_2025-01-05_20-46-42.png
线性插值-bilinear
Snipaste_2025-01-05_20-48-31.png
双线性插值-constant
Snipaste_2025-01-05_20-49-15.png
双三次插值-bicubic,考虑权重,从最近的16个像素点计算该处像素值
Snipaste_2025-01-05_20-50-23.png

图像增强

突出感兴趣区,弱化不感兴趣区,分空域处理法和频域处理法

空间域处理法

点运算-灰度变换:有线性灰度变换、分段线性灰度变换,非线性灰度变换

invert_image(Image:ImageInvert::) // 图像取反
emphasize(Image:ImageEmpasize:MaskWidth,MaskHeight,Factor:) // 增强Factor倍,res:=round(org-mean)*Factor+org,MaskWidth-模板宽,MaskHeight-模板高
scale_image(Image:ImageScaled:Mult,Add:) // 缩放图像的灰度,res:=org*Mult+Add
直方图修正法
equ_histo_image(GrayImage:ImageEquHisto) // 直方图均衡化
Snipaste_2025-01-05_21-03-28.png
直方图规定化
Snipaste_2025-01-05_21-05-03.png

邻域运算-图像平滑

目的:抑制噪声
高斯噪声:随机,总体符合正太分布的噪声
Snipaste_2025-01-05_21-14-12.png
椒盐噪声:只有两种幅值
Snipaste_2025-01-05_21-15-07.png
mean_image(Image:ImageMean:MaskWidth,MaskHeight:) // 邻域平均法,实质均值滤波,针对高斯噪声,会使图像产生模糊,特别在边缘和细节处,所用邻域半径越大,图像模糊程度越大,MaskWidth和MaskHeight是掩膜的长宽
中值滤波,针对椒盐噪声
多图像平均法:对同一物景下拍摄多福图像,取平均值来消除噪声

邻域运算-图像锐化

目的:增强图像的边缘和轮廓
从图中可知图像的边缘一般是灰度突变的地方,锐化的实现是基于微分。边缘取一阶微分的极值或二阶微分的过零点
Snipaste_2025-01-05_21-30-56.png
Snipaste_2025-01-05_21-32-34.png
实际使用差分来处理微分
水平垂直差分梯度
梯度方向是边缘方向垂直的方向,梯度的意义:梯度是灰度变化率最大的方向
Snipaste_2025-01-05_21-46-45.png
Snipaste_2025-01-05_21-47-41.png
Snipaste_2025-01-05_21-48-12.png
一阶微分算子-Roberts梯度算子
使用交叉的差分表示,就变成了Roberts梯度算子
Snipaste_2025-01-05_21-48-52.png
Roberts梯度算子的缺陷:采用梯度微分锐化图像,同时会使噪声、条纹得到增强,并且边缘信息强度低,可能出现断断续续。
Snipaste_2025-01-05_21-51-19.png
一阶微分算子-Sobel梯度算子
结合了高斯平滑和微分求导,增强了边缘信息的强度,一定程度上避免了噪声、条纹的干扰。
Snipaste_2025-01-05_21-57-45.png
Snipaste_2025-01-05_22-00-23.png
对比Roberts,边缘信息得到了加强
Snipaste_2025-01-05_22-03-43.png
sobel_amp(Image:EdgeAmp:FilterType,Size) // FilterType-滤波类型,Size-掩膜大小
EdgeAmp的结果:
Snipaste_2025-01-05_22-08-41.png
进一步通过阈值分割、提取边缘框架(skeleton)后,可获得所需边缘:
Snipaste_2025-01-05_22-11-48.png
skeleton(Region,Skeleton) // 提取边缘框架
二阶微分算子-拉普拉斯算子
拉普拉斯算子获得的轮廓信息比一阶微分算子更为丰富
Snipaste_2025-01-05_22-15-58.png
图像的拉普拉斯锐化处理:将原图像和拉普拉斯图像进行叠加,可以使增强图像轮廓显示的更为清晰。
Snipaste_2025-01-05_22-20-07.png
laplace(Image:ImageLaplace:ResultType,MaskSize,FilterMask:) // MaskSize-掩膜大小,FilterMask-4邻域还是8邻域
laplace_of_gauss(Image:ImageLaplace:Sigma:) // 先高斯平滑再锐化

频率域处理法

一幅图像灰度均匀的区域对应低频部分,噪声、边缘、细节对应高频部分
高通滤波:筛除低频部分,保留高频部分
低通滤波:筛除高频部分,保留低频部分
(1)fft_generic(Image:ImageFFT:'to_freq',Exponent,Mode,ResultType:) // 空域到频域的快速傅里叶变换,Mode-直流分量在中间还是在边缘,dc_center-高频分量在边缘,低频分量在中间,dc_edge-高频分量在中间,低频分量在边缘
(2)gen_lowpass(:ImageLowpass:Frequency,Norm,Mode,Width,Height:) // 生成低通滤波器模型
gen_highpass(:ImageHighpass:Frequency,Norm,Mode,Width,Height:) // 生成高通滤波器模型
(3)convol_fft(ImageFFT,ImageFilter:ImageConvol::) // 在频域里卷积图像,ImageFFT-待处理的频域图像,ImageFilter-滤波器模型,ImageConvol滤波后的频域图像
(4)fft_generic(ImageFFT:Image:'_freq',Exponent,Mode,ResultType:) // 频域到空域
频谱图中白亮的地方是低频,因为图像的能量一般是集中在低频部分
频域图中的(0,0)点是特殊的点,是频谱的直流(dc)分量,代表空间域图像的平均灰度

频率域处理法-同态滤波

目的:解决光照不均匀导致的图像模糊
原理:相机的成像可以看作是照射分量和反射分量的乘积,通过换算,低频部分对应照度分量,高频部分对应反射分量,此时只需使用高通滤波器过滤低频部分即可。
图片来源:B站WLSU苏波的Halcon课堂