一、图像预处理

四种图像的基本数据结构:

Image:指Halcon的图像类型。

Region:指图像中的一块区域

XLD:指图像中某一块区域的轮廓

Tuple:类似于数组,用于存储一幅或多幅图像

内核矩阵的选择:核越大越模糊

一、图像预处理

1. 图像的变换与校正

变换:平移、旋转、缩放

仿射变换:把前三者结合起来,仿射变换可应用于像素点、二维点、图像、区域、XLD轮廓等对象。

投影变换:仿射变换是投影变换的一种特殊情况,特殊在变换后的图像形状仍然维持原状。而投影变换,又可能变换后图像的形状也发生了很大的改变。

2. 感兴趣区域

裁剪出目标区域,减少计算,提高效率

3. 图像增强

        图像的增强的目的是改善图像的质量。

对比度问题:对比度局部或全部偏低,影响图像视觉

噪声干扰问题:使图像蒙受干扰和破坏

清晰度下降问题,使图像模糊不清,甚至严重失真

        图像的增强是综合和一般性地改善图像质量,解决图像由于噪声、模糊退化和对比度降低等三类问题,获得最好的视觉效果通过对图像的处理,使图像比处理前更适合一个特定的应用突出图像中的“有用”信息,扩大图像中不同物体特征间的差别,为图像信息的识别与提取奠定基础。主要的处理方式:去除噪音、边缘增强、提高对比度、增加亮度、改善颜色效果、改善细微层次等——通常与改善视觉效果相一致。

3.1 直方图均衡化

        统计图像中每个灰度值出现的次数,对直方图进行均衡化操作,使像素的灰度值分布的更加均匀,从而增强图像的亮度。

*清空窗口
dev_close_window()
*读图片
read_image(Image,'E:/C/halcon/tiaoma.jpg')
*转灰度
rgb1_to_gray (Image,GrayImage)
*获取图像尺寸
get_image_size(Image,W,H)
*打开指定大小的新窗口
dev_open_window(0,0,W,H,'black',WindowHandlel)
*显示图像
dev_display(GrayImage)


*直方图均衡化
equ_histo_image (GrayImage,ImageEqu)
*获取Image图像Region区域的灰度相对直方图RelativeHisto和绝对直方图AbsoluteHisto。
*gray_histo ( Regions, Image : : : AbsoluteHisto, RelativeHisto )
gray_histo(Image,Image,AbsoluteHisto1,RelativeHisto1)
gray_histo(ImageEqu,ImageEqu,AbsoluteHisto2,RelativeHisto2)


dev_open_window(0,0,512,512,'black',WindowHandle)
dev_set_color('red')
*将一个直方图转化为一个区域
*AbsoluteHisto1直方图,X,Y中心,1:比例
gen_region_histo(Histo1,AbsoluteHisto1,255,5,1)
dev_set_color('green')
gen_region_histo(Histo2,AbsoluteHisto2,255,450,1)

3.2 增强对比度

对图像的边缘和细节进行增强,使其更加明显。

read_image(Image,'E:/C/halcon/tiaoma.jpg')
*增强对比度  让每个像素之前的差异变大,从而达到增强对比度的效果
*参数3和4:内核矩阵大小,对比度因子
*参数5:比例因子,对比度增加的系数
emphasize(Image,ImageEm,10,10,1.5)
dev_display(ImageEm)

内核矩阵的选择:卷积核的选择

3.3 处理失焦图像

        一些对焦不准的图像可能存在模糊不清的问题,这时需要考虑锐化操作。

锐化的算子有:Sobel、Canny、Laplace算子等,这里用了一种冲击滤波器,用来进行边缘的增强。原理是:再图像的边缘形成一些冲击,以对边缘进行增强。

        图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰。

read_image(Image,'E:/C/halcon/tiaoma.jpg')
*处理失焦图像
*参数3:
*参数4:迭代次数
*参数5:Mode:可选canny或laplacian, 二维微分算子
*参数6:Sigma:平滑参数,为了使边缘提的更鲁棒,Sigma是高斯平滑的标准差
shock_filter(Image,SharpenedImage,0.5,20,'canny',2.5)
dev_display(SharpenedImage)

4. 图像平滑与去噪

        图像中存在的杂点、噪声,对于比较均匀的噪声,可以用软件消除

4.1 均值滤波

        将像素灰度值与其邻域内的像素灰度值相加取平均值。

*均值滤波
read_image(Image,'E:/C/halcon/tiaoma.jpg')
mean_image(Image,Image_mean,9,9)
dev_display(Image_mean)

4.2 中值滤波

        以像素点为中心,取一定形状的邻域作为滤波器,再将该区域内的像素灰度值进行排序,以排序结果的中间值作为灰度计算结果赋值给该区域内的像素。

*中值滤波
read_image(Image,'E:/C/halcon/tiaoma.jpg')
median_image(Image,Image_median,'circle',3,'continued')
dev_display(Image_median)

4.3 高斯滤波

        调用一个二维离散的高斯函数,适合用来去除高斯噪声。

*高斯滤波
read_image(Image,'E:/C/halcon/tiaoma.jpg')
gauss_filter(Image,Image_median,5)
dev_display(Image_median)

4.4 这三种滤波怎么选择

5. 光照不均匀

        改善光照的方法有许多,这里只介绍一种采用通道分离的方式对彩色图像进行光线均衡化处理,其步骤如下:

(1)输入光照不均匀的彩色图像。

(2)分离出RGB通道,并将每一个通道单独存储成一幅图像。

(3)对每个颜色通道的图像进行直方图均衡化,使其色彩过渡更加平滑。

(4)将平滑后的3个通道的图像重新组合成三通道的彩色图像。

*通道分离
read_image(Image,'E:/C/halcon/tiaoma.jpg')
*通道分离
decompose3(Image,image1,image2,image3)
*均值滤波
mean_image(image1,Mean1,9,9)
*图像增强 增强对比度
emphasize(Mean1,em1,5,5,1.5)

illuminate(em1,ImageI1,20,20,0.55)
*直方图均衡化
equ_histo_image(image2,ImageEq2)
equ_histo_image(image3,ImageEq3)
*通道合并
compose3(ImageI1,ImageEq2,ImageEq3,MultiChannelImage)
dev_display(MultiChannelImage)

你可能感兴趣的:(机器视觉Halcon,图像处理,计算机视觉,人工智能)