Halcon 基础知识(一)_leo_888的专栏-CSDN博客
hom_mat2d_identity (HomMat2DIdentity)
解释:定义一个对角为 1 的 单位矩阵,它和任何矩阵相乘等于原矩阵本身。
hom_mat2d_translate (HomMat2DIdentity, Tx, Ty, HomMat2DTranslate)
功能:把平移添加到防射变换矩阵
HomMat2D(输入参数):仿射变换矩阵
Tx(输入参数):沿x轴方向平移的距离
Ty(输入参数):沿y轴方向平移的距离
HomMat2DTranslate(输出参数):输出变换矩阵
##图像预处理部分
#1图像的平移、旋转、缩放、仿射变换、投影变换
read_image(Image,'E:/C/Halcon/1.jpg')
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_translate(HomMat2DIdentity,300,500,HomMat2DIdentity)
affine_trans_image (Image, ImageAffineTrans, HomMat2DIdentity, 'constant', 'false')
#旋转
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, 0.78, 300, 300, HomMat2DRotate)
affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')
#缩放
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_scale (HomMat2DIdentity, 0.5, 0.5, 0, 0, HomMat2DScale)
affine_trans_image (Image, ImageAffineTrans, HomMat2DScale, 'constant', 'false')
二、ROI
提取感兴趣区域,从而减小计算量。在图像匹配中,可以定义模板。是个区域。
在halcon中,ROI需要两步来完成,第一步是划定区域,第二步是裁剪出区域。
划分区域,有两种方式,第一种是使用界面的create ROI,可以选择各种框图。第二种是使用算子:gen_rectangle等。
裁剪出区域,因为我们在图像中,只是画了区域,并没有裁剪出来,使用算子reduce_domain.这个算子,你可以理解为,ROI ,也就是图像的作用域,ROI 的建立,使原来的整张图像的作用域减少为ROI,即我们指定的区域,作用域减少了,就有了算子名称的由来。
三、图像增强 先图像增强,再图像降噪
直方图均衡化、增强对比度、处理失焦图像
图像的噪声也增强了
从灰度图出发,建立一个0-255的灰度直方图,统计每一个灰度值出现的次数。接着对直方图进行均衡化操作,使像素的灰度值分布更加均匀,从而增强图像的亮度。
#直方图均衡化
read_image(Image,'E:/C/Halcon/1.jpg')
rgb1_to_gray(Image,GrayImage)
equ_histo_image(GrayImage,ImageEquHisto)
gray_histo(Image,Image,AbsoluteHisto1,RelativeHisto1)
gray_histo(ImageEquHisto,ImageEquHisto,AbsoluteHisto2,RelativeHisto2)
gen_region_histo(H1,AbsoluteHisto1,255,5,1)
gen_region_histo(H2,AbsoluteHisto2,255,400,1)
equ_histo_image:直方图均衡化(包含灰度转化直方图,直方图均衡化两个步骤)
gray_histo:计算灰色值的分布。 后两个参数,一个绝对频率,一个相对频率
gen_region_histo:将一个直方图转换为一个区域
gen_region_histo将使用gray_histo、gray_histo_range或tuple_histo_range创建的直方图转换为一个区域。行和列定义了图形中心的位置。
增强对比度:对图像的边缘和细节进行增强,使其更加明显。emphasize函数
read_image(Image,'E:/C/Halcon/1.jpg')
emphasize(Image,ImageEm,10,10,1.5)
dev_display(ImageEm)
emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )
MaskWidth, MaskHeight:掩码大小
Factor :比例因子
mean:得到的灰度值 的平均
处理失焦图像:对焦不准的图像可能存在模糊不清的情况,考虑锐化操作。在凸显搞得边缘形成一些冲击,对图像的边缘进行增强。属于图像增强方法,主要增强边缘,减少图像边缘扩散,更便于边缘提取等操作。
算法功能
- 在图像边缘产生强的不连续性,
- 在一个区段内(包含一个最大影响区和一个最小影响区的范围简称为区段)图像是分段常数
read_image(Image,'E:/C/Halcon/1.jpg')
shock_filter(Image,ImageEm,0.5,20,'canny',2.5)
dev_display(ImageEm)
shock_filter(Image : SharpenedImage : Theta, Iterations, Mode, Sigma : )
// Theta:即Δt 步长
// Iterations:迭代次数
// Mode:可选canny或laplacian, 二维微分算子
// Sigma:平滑参数,为了使边缘提的更鲁棒,Sigma是高斯平滑的标准差
图像平滑与去噪
降噪会使图像变得模糊
#图像平滑与降噪
read_image(Image,'E:/C/Halcon/1.jpg')
mean_image(Image,ImageOut,9,9)
median_image(Image,ImageOut,'circle',3,'continued')
gauss_filter(Image,ImageOut,5)
mean_image
median_image
gauss_filter
光照不均匀
#光照不均匀现象 彩色图像
read_image(Image,'E:/C/Halcon/1.jpg')
#1.分离出RGB通道
decompose3(Image,image1,image2,image3)
#对每个通道图像进行直方图均衡化
equ_histo_image(image1,image_equ1)
equ_histo_image(image2,image_equ2)
equ_histo_image(image3,image_equ3)
#合并
compose3(image1,image2,image3,mu)