一、ROI
为减少计算量,只关注待检测物体或该物体周围的一片区域即可,ROI就是图像处理所关注的区域
dev_close_window()
read_image(Image_display, 'C:/Users/Desktop/code/data/display.jpg')
get_image_size(Image_display,imageWidth,imageheight)
dev_open_window(0, 0, imageWidth, imageheight, 'black', WindowHandle)
dev_display(Image_display)
*选择ROI,指定矩形顶点坐标
gen_rectangle1(ROI_0, 52, 46, 456, 574)
reduce_domain(Image_display, ROI_0, ImageReduced)
dev_open_window(0,400,imageWidth, imageheight, 'black', WindowHandle1)
dev_display(ImageReduced)
二、直方图均衡
从图像的灰度图入手,建立一个0~255灰度值的直方图,统计每个灰度直方图中出现的次数,将灰度图中对应点的灰度值记录在直方图中,对该直方图进行均衡操作,使像素的灰度值分布得更加均匀,从而增强图像的亮度
read_image(board, 'C:/Users/Desktop/code/data/boardEqu.jpg')
rgb1_to_gray(board,GrayImage)
equ_histo_image(GrayImage, ImageEquHisto)
*显示直方图
gray_histo(board,board,AbsoluteHisto1, RelativeHisto)
gray_histo(ImageEquHisto,ImageEquHisto,AbsoluteHisto2,RelativeHisto1)
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
dev_set_color('red')
gen_region_histo(Histol1,AbsoluteHisto1, 255, 255, 1)
dev_set_color('green')
gen_region_histo(Histol2,AbsoluteHisto2,255, 255, 1)
三、增强对比度
除了可以使用均衡直方图增加亮度外,还可以增强图像的对比度,对图像的边缘和细节进行增强,使其更明显
read_image(text, 'C:/Users/Desktop/code/data/text.jpg')
emphasize(text,ImageEmphasize,10, 10, 1.5)
dev_display(ImageEmphasize)
scale_image_max(text,ImageScaleMax)
dev_display(ImageScaleMax)
四、处理失焦图像
一些对焦不准的图像可能存在模糊不清的问题,需要考虑瑞锐化操作,锐化的算子有很多,如Sobel算子,Canny算子,Laplace算子等
read_image(Image, 'C:/Users/Desktop/code/data/defocusComponnet.jpg')
shock_filter(Image, SharpenedImage, 0.5, 20, 'canny', 2.5)
dev_display(SharpenedImage)
五、图像平滑与去噪
图像中会存在很多杂点和噪声,对于比较均匀的噪声,可以考虑软件的算法进行消除,如均值滤波、中值滤波、高斯滤波
1.均值滤波
原理:将像素灰度值与其邻域内的像素灰度值相加取平均值
2.中值滤波
原理:以像素为中心,取一个指定形状的邻域作为滤波器,该形状可以是正方形,也可以是圆形,将该区域内的像素灰度值进行排序,以排序结果的中间值作为灰度计算结果赋值给该区域内的像素
3.高斯滤波
原理:利用的滤波器不是简单的求平均值或是排序,而是调用一个二位离散的高斯函数,高斯滤波适用于去除高斯噪声,在HalCon中使用gauss_filter算子进行高斯滤波
read_image(Image, 'C:/Users/Desktop/code/data/marker.jpg')
mean_image(Image, ImageMean, 9, 9)
dev_display(ImageMean)
median_image(ImageMean, ImageMedian, 'circle', 1, 'continued')
dev_display(ImageMedian)
gauss_filter(ImageMedian, ImageGauss, 5)
dev_display(ImageGauss)
六、光照不均匀
步骤:
1.输入光照不均匀的彩色图像
2.分离出RGB图像,使用decompose3算子将图像分离成红绿蓝三个通道,并将每个通道单独存成一副图像
3.对每个颜色通道的图像进行直方图均衡,使其色彩过渡更加平滑
4.将平滑后的3个通道的图像重新组合成三通道的彩色图像,这里使用compose3算子将三通道图像重新组合
read_image(Image, 'C:/Users/15398613680/Desktop/Halcon机器视觉算法原理与编程实战/code/code/data/label.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.05)
equ_histo_image(Image2,ImageEquHisto2)
equ_histo_image(Image3,ImageEquHisto3)
compose3(ImageI1,ImageEquHisto2,ImageEquHisto3, MultiChannelImage)
dev_display(MultiChannelImage)