大家好,又见面了,我是你们的朋友全栈君。
图像处理基本算法操作从处理对象的多少可以有如下划分:
一)点运算:处理点单元信息的运算
二)群运算:处理群单元 (若干个相邻点的集合)的运算
表1 图像处理操作按处理对象数量分类表格
操作类型 | 具体常用操作 |
---|---|
点运算 | 二值化操作、直方图处理、亮度映射、加法运算、 翻转运 算 、尺度运算 、对数运算 、指数运算等 |
群运算 | 模板卷积运算、滤波运算(均值滤波、最大值滤波 、最小值滤波)、 各项异性扩散、形态学操作(膨胀和腐蚀)、力场变换等 |
下图是一副普通的吉普车图像和我们生活中见到的并没有什么两样,但是在计算机看来则是另外一副“模样”了。图像中黄色部分则是几部车图像倒车镜的局部图像在计算机中的形态。
图1 计算机图像的真实表现形态
以上图为例说明几种重要的点运算和群运算。
1.二值化操作
图像二值化是图像处理中十分常见且重要的操作,它是将灰度图像转换为二值图像或灰度图像的过程。二值化操作有很多种,例如一般二值化、翻转二值化、截断二值化、置零二值化、置零翻转二值化。
其中src(x,y)表示的是原始图像中第x行第y列像素值。
如果去图像中左上角3X3的邻域,thresh取200,maxval取255,阈值方法选择一般二值化(THRESH_BINARY),那么操作过后的结果如下:
图2 一般二值化图示
在图2中,一般二值化下底表示为0,上顶表示为maxval,其中蓝色横线则表示阈值(thresh)。超过该阈值则为maxval,否则为0。
(a) 操作前 (b) 操作后
2.直方图处理
直方图是图像处理中另一重要处理过程,它反映图像中不同像素值的统计信息。从这句话我们可以了解到直方图信息仅反映灰度统计信息,与像素具体位置没有关系。这一重要特性在许多识别类算法中直方图处理起到关键作用。假设现有3X3的大小的图像。像素值分别为6,3,3,8,6,8,3,3,3,那么它的统计直方图则为
假设图1中反光镜的直方图为下图所示。
图3 图像直方图
假设我们对直方图中中某一灰度信息进行置零操作,那么反映在直方图图上则是该灰度的柱状高度为0。
值得一说的是二值化处理和某些直方图处理属于不可逆运算,而亮度映射、加法运算、翻转运算 、尺度运算 、对数运算 、指数运算等皆属于可逆运算。
3.模板卷积运算
模板运算是图像处理中使用频率相当高的一种运算,很多操作可以归结为模板运算,例如平滑处理,滤波处理以及边缘特征提取处理等。这里需要说明的是模板运算所使用的模板通常说来就是NXN的矩阵(N一般为奇数如3,5,7,…),如果这个矩阵是对称矩阵那么这个模板也称为卷积模板,如果不对称则是一般的运算模板。我们通常使用的模板一般都是卷积模板。如边缘提取中的Sobel算子模板。
图 4-a Mx算子模板 图4-bMy算子模板
模板运算一般操作过程分为以下三个步骤:
1)定”锚点 “:就是处理之后的结果值的保存位置,该位置称为”锚点 “,有时候也不在中心。
2)对位相乘:模板和原图像的待处理区域,进行对位相乘运算
3)求和:将步骤2中模板区域内运算结果进行求和,将求和的结果置于”锚点 ”
4.形态学处理
形态学处理是二值图像处理中的经典处理手段,主要有膨胀处理和腐蚀处理。也包含一些其他操作如 二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。
膨胀和腐蚀操作主要的功能有:1)消除杂波,噪声信息 2)填充图像内部的”孔洞” 3)平滑边缘毛刺
膨胀和腐蚀具有类似的数学模型,这里就一起介绍了,简单来说膨胀就是取最大值,腐蚀操作是取最小值。
膨胀操作的数学表达式为:
腐蚀操作的数学表达式为:
膨胀操作和腐蚀操作一般的处理过程如下:
1)按照选定的处理核(NxN,一般N为奇数)与源图像的区域进行逐个“锚点”配对
2)将配对的处理邻域信息进行相应操作,膨胀操作就取最大值,腐蚀操作就取最小值
3)求的结果作为源图像中配对区域的数值。
图a 原图 图b 膨胀处理图 图c 腐蚀处理
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145637.html原文链接:https://javaforall.cn