文章目录
- 概要
- 整体架构流程
- 技术名词解释
- 技术细节
概要
在HALCON中,为了更好的处理图片,我们通常会对图片进行平滑处理,以减少图片噪点对我们工作的干扰,那么HALCON中图片平滑处理算子的原理是如何运作,参数如何调配,又适用于哪些地方呢?让我来讲解一下吧。
整体架构流程
技术名词解释
*读取图片read_image(Image,'C:/Users/32330/Pictures/panda.jpg')*转灰度图 rgb1_to_gray(Image,GrayImage)*预生成高斯噪点 gauss_distribution(10,Distribution)*预生成椒盐噪点 sp_distribution(5,5,Distribution1)*增加噪点add_noise_distribution(GrayImage,ImageNoise,Distribution)技术细节
原图:
进行读取图片,灰度图转换操作:
read_image(Image,'C:/Users/32330/Pictures/panda.jpg')rgb1_to_gray(Image,GrayImage)得到以下图片:
可以看到图片的信息很干净,几乎没有噪点,我们自己添加一些噪点,以便接下来的讲解。
设定高斯噪点,添加噪点:
gauss_distribution(10,Distribution)add_noise_distribution(GrayImage,ImageNoise,Distribution)得到以下图片:
这个时候我们发现图片有些杂信息,把图片原本的信息给干扰了,这个时候我们就可以使用图像平滑处理算子,来对图片进行平滑处理,凸显图片的特征信息。
mean_image(ImageNoise,ImageMean,3,3)得到以下图片:
可以看到,图片变干净了许多,甚至相比于原图,连边缘锯齿都变得更加平滑了额许多。我们再调大数值来看看。
mean_image(ImageNoise,ImageMean,7,7)得到以下图片:
可以看到,图片变得更加模糊。那么这个算子到底该怎么用呢?运作原理是什么?
别急,接下来让我为你讲解一下:
mean_image(ImageNoise,ImageMean,3,3)参数一就是入参,是指你想要进行处理的图像。
参数二就是出参,是指处理后的图像。
重点是参数三和参数四,
参数三是指滤波器的宽度。
参数四是指滤波器的高度。
参数三和四的宽高,最好是奇数,这样才能达到更好的效果。
运作原里就是,使用滤波器,对图像的每一个像素点根据
滤波器大小来进行灰度值(1~255)平均处理。也就是(自身像素灰度值+领域灰度值)/滤波器宽高。
接下里就是原理可视化展示:
我们设定一个宽高都为3的滤波器,在遍历像素点时大概是长这样的:
数值其实是我差不多填的,大概长这样。
最后中心点得出来的值就是:(40+160+25+65+205+60+255+125+20)/(33)≈106
然后每个像素点都如此计算,最后才根据每个像素点计算的结果再输出,这样便抑制了噪声。
但其实这个算子的本质就是把噪点像素的噪点平均给了邻域,让身边的像素点替它承担了多出来的灰度值,本质上并没有消除噪点,只是看起来是消除了而已(所以叫抑制)。