欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

入门指南:使用LabVIEW进行图像灰度处理与转换(第4部分)

最编程 2024-02-20 10:43:30
...

目录

1、图像灰度分析


1.1、直方图分析


1.1.1、灰度图像直方图分析


1.1.2、彩色图像直方图分析


1.2、线灰度曲线分析


1.3、图像线灰度均值分析


1.4、图像形心和质心分析


1.5、图像灰度定量描述分析


2、图像灰度变换


1、图像灰度分析

图像灰度分析是图像分析中最基本的内容,它使用各种图像灰度分析工具,提取图像或ROI区域内的灰度特征信息。基于对图像灰度的分析测量,可以实现最基本的机器视觉检测系统,如目标存在性检测系统等。


直方图(histogram)是最基本的图像灰度分析工具。使用它不仅可以判断图像中是否包含可从背景中分割出的区域、图像的饱和度和对比度是否适合检测任务,还能确定应该如何对图像采集系统进行调整以获得较高质量的图像。


除直方图外,线灰度分布曲线(line profile)、图像线灰度均值(linear averages)ROl边界灰度曲线、图像形心(centroid,又称几何中心)和图像质心(central of mass)、灰度定量描述(grayscale quantify)以及图像结构相似度(structuresimilarity index)分析也是较为有效的图像灰度分析工具。


1.1、直方图分析

图像直方图是最基本的图像分析工具。由于其具有简单易用等特点,因此在图像分割、图像灰度变换等处理过程中发挥着重要作用。图像直方图常见的作用包括:判断图像中是否包含可以清晰地从背景中分割出的区域,分析图像的亮度和对比度是否满足机器视觉系统的检测要求,以及确定如何对图像采集系统进行调整改进。


图像的直方图包含了丰富的图像信息,是图像最基本的统计特征,描述了图像的灰度级内容,反映了图像的灰度分布情况。图像的灰度直方图以图表的方式显示了图像中每个灰度级与其所对应像素数量的关系,其中像素数量可被看作灰度级的函数。图表的横坐标为灰度级,纵坐标是各个灰度级在图像中出现的频率。直方图是概率密度函数,从概率论的角度来看灰度出现的频率可被看作其出现的概率。


对于数字图像来说,常见的直方图类型有线性直方图(linear histogram)和累计直方图(cumulative histogram)。两种情况下,直方图的横轴均为灰度级,线性直方图的纵轴为灰度级对应的像素数,累计直方图的纵轴则表示所有小于或等于灰度级k的像素数量之和。若以离散函数形式表示两种类型的灰度直方图,则线性直方图可表示为:

image.png



累计直方图则可表示为:

image.png



其中:


H(k)和n,表示灰度级对应的像素数量;

k表示灰度级;

max表示图像数据类型可表示的最大值,如当图像类型为U8时,max=255。

下图分别显示了线性直方图和累计直方图的例子。其中线性直方图说明图像主要由3个灰度不同的部分构成,两个灰度较低的部分比较接近,而第三个灰度较高的部分与前两个灰度较低的部分区别明显。累计直方图则说明两个灰度较低的部分大约占整个图像的80%,而灰度较高的部分约占图像的20%。

image.png



机器视觉系统的光源对于成像质量至关重要。当视场中光线过暗时,图像传感器成像过程会出现曝光不足的情况;而若光线太强,则会导致曝光过度。无论曝光不足还是曝光过度,都会导致所采集的图像中检测目标的特征信息丢失。使用直方图可以直观地判断图像的亮度是否满足系统检测要求。由于曝光不足的图像中包含大量灰度值较低的像素,因此常会在直方图的左边出现峰值;相反,曝光过度的图像常包含大量灰度值较高的像素,峰值会出现在直方图的右端。这两种情况如下图所示:

image.png



1.1.1、灰度图像直方图分析

Nl Vision为图像直方图的操作提供了易用的IMAQ Histograph和IMAQ Histogram,它们位于LabVIEW的视觉与运动→lmage Processing→Analysis图像分析函数选板中,如下图所示:

image.png



函数的说明和使用可参见帮助文档:

image.png



通过一个案例了解IMAQ Histograph和IMAQ Histogram计算图像直方图的使用方法和区别,设计思路如下所示:


程序在将图像读入内存后即可直接使用VI计算其直方图,其中参数#Classes指定了要将图像中的像素分为多少级别;

默认情况下,8位灰度图像的像素将被分为256级,也就是说每个灰度级都会被作为单个类来对待。NI建议采用2的整数次幂来对像素进行分级。参数Interval Range为直方图计算时的最大和最小边界值,只有那些落在最大值和最小值所约定的范围内的像素才会参与直方图的计算;

如果指定的像素级数超出了Interval Range中最大值和最小值约定的范围,则最终计算所得到的像素灰度级数会与指定的灰度级数不同。

IMAQ Histograph返回的Histograph参数是以LabVIEW Graph数据格式组织的灰度直方图数据,它可以直接连接到Graph控件显示直方图曲线。Mean Value参数会返回参与直方图计算的像素灰度平均值。Standard Deviation参数返回直方图灰度的标准差,其值越大,则说明参与直方图计算的灰度级分布越分散,对这个图像来说对比度就越强。同时显示了经过计算得到Iron.tif图像的直方图。

程序设计如下所示:

image.png



效果如下所示:

image.png



项目资源下载请参见:https://download.****.net/download/m0_38106923/18997435


1.1.2、彩色图像直方图分析

Nl Vision提供了3个进行彩色图像直方图的计算操作函数IMAQ ColorHistogram、IMAQ ColorHistograph和IMAQ ColorEqualize,它们位于LabVIEW的视觉与运动→Image Processing→Color Processing函数选板中。这3个函数的作用与灰度图像的直方图函数IMAQ Histogram、IMAQ Histograph和IMAQ Equalize类似,只是它们可作用于彩色图像的3个不同分量,如下所示:

image.png



函数的说明和使用可参见帮助文档:

image.png



这三个函数功能说明如下所示:


IMAQ ColorHistogram可适用于RGB、HSL、HSV、HSI、CIE Lab和CIE XYZ 6种色彩空间;

虽然lMAQ ColorHistograph仅可支持RGB、HSL、HSV和HSI4种色彩空间,但是它返回的数据却能直接与LabVIEW的Graph数据格式兼容,直接在前面板上绘制曲线;

IMAQ ColorEqualize可对彩色图像的3个分量进行直方图匹配或均衡操作。

通过一个案例来了解彩色图像直方图的实现方法(IMAQ ColorHistograp函数为例),程序设计思路如下所示:


程序先将RGB-U32格式彩色图像pepper.png读入内存,然后使用IMAQ Castlmage将其转换为HSL-U32格式;

IMAQ ColorHistograph在程序中的作用是计算HSL彩色图像各个图层的直方图数据,并以LabVIEW Graph的格式返回这些数据,以方便显示。

程序设计如下所示:

image.png



程序效果如下所示:

image.png



项目资源下载请参见:https://download.****.net/download/m0_38106923/18998403


1.2、线灰度曲线分析

线灰度曲线分析(line profile)绘制了沿图像中某条线段的像素灰度变化。它的横轴为线段上的像素点位置索引,纵轴为各点的灰度。线灰度分布曲线可用于检测图像中相邻部分的边界,定量表示灰度变化并可检测图像中是否存在某种特征。在线灰度曲线中,波峰和波谷代表图像中某一区域灰度沿着所选线段的增减,波峰和波谷的宽度和幅度分别代表区域在图像中的尺寸和亮度。例如,若图像中包含某一亮度较高的区域,则沿着穿过它的线段所绘制的灰度分布曲线中将出现一个波峰,该区域相对于背景的亮度越高,则波峰就越陡峭。注意,图像中的噪声通常会导致一系列较窄的尖峰。


Nl Vision中IMAQ LineProfile可实现线灰度曲线分析操作,它位于LabVIEW的视觉与运动→lmage Processing→Analysis图像分析函数选板中(位置参照文章:1.1.1部分),函数的说明和使用可参见帮助文档:

image.png



通过统计生产线上某种针形产品数量的例子理解线灰度曲线分析的应用方法,程序设计思路如下所示:


程序将图像读入内存后,先通过IMAQ GetlmageSize获取图像宽度;

然后用IMAQ Overlay Line沿着图像中产品上部放置一条和图像等宽度的线段无损图层;

该线段所覆盖的像素正是IMAQ Line Profile用于绘制线灰度曲线的线段。

程序设计如下所示:

image.png



在线灰度曲线中,每个上升或下降沿都代表灰度由暗到亮或由亮到暗的剧烈变化,而每个针形部件刚好对应一个"脉冲”。因此,只要统计“脉冲"的个数,即可得知图像中包含的要检测部件的数量,程序效果如下所示:

image.png



项目资源下载请参见:https://download.****.net/download/m0_38106923/18999559


1.3、图像线灰度均值分析

图像线灰度均值分析(linear averages)可以计算整个图像或指定矩形区域内像素的4种类型线灰度均值,包括沿X轴方向上每列像素的灰度线性平均值(XAxis Average)、沿Y轴方向上每行像素的灰度线性平均(YAxis Average)、沿左下到右上角对角线方向,垂直于该对角线的像素灰度均值(X+YAxisAverage),以及沿左上角到右下角对角线方向上垂直于该对角线的像素灰度均值(×-YAxis Average)。下图显示了计算4种类型的图像线灰度均值的逻辑示意图,其中虚线代表像素灰度均值,实线表示参与计算的像素。

image.png



Nl Vision中IMAQ LinearAverages可实现图像线灰度均值分析操作,它位于LabVIEW的视觉与运动→lmage Processing→Analysis图像分析函数选板中(位置参照文章:1.1.1部分),函数的说明和使用可参见帮助文档:

image.png



通过使用图像线灰度均值和ROI边界灰度曲线检查液态药品灌装质量的例子理解图像线灰度均值分析的应用方法,程序设计思路如下所示:


程序先将采集到的图像读入内存;

然后使用IMAQ LinearAverage计算指定矩形区域内沿坐标X方向上每列像素的灰度线性平均值XAxis Average;

为了检查药品灌装质量是否达标,程序所指定的矩形区域正好覆盖灌装达标时的液位;

为了直观地让用户看到所指定ROI区域的位置,程序使用IMAQ Overlay Rectangle在图像中标记出矩形区域;

IMAQ ROIProfile用于返回指定的矩形ROI区域的灰度曲线ROI Profile。

程序设计如下所示:

image.png



观察程序运行后返回的曲线XAxis Average和ROlProfile,可以发现对于灌装正常的药瓶,沿着X轴方向上每列像素的灰度线性平均值均在160附近;而未灌满的药瓶,其沿着X轴方向上每列像素的灰度线性平均值则在灰度范围最大值255附近,这是由于未灌满的药瓶在矩形ROI范围内白色区域所占比例要比正常药瓶大。矩形ROI区域的边界灰度曲线和线灰度分布曲线类似,它从矩形ROI的左上角开始,按照顺时针方向绘制边界所覆盖的各像素灰度。由图中ROI边界灰度曲线可以看出,矩形上边框对应的灰度曲线变化类似于脉冲,这是因为白色药瓶与黑色背景之间交替变化而形成的。矩形下边框对应的灰度曲线变化则稍有不同,其中一个未正常灌装的药瓶灰度"脉冲"值明显高于其他几个正常灌装的药瓶。程序效果如下所示:

image.png



项目资源下载请参见:https://download.****.net/download/m0_38106923/19000935


1.4、图像形心和质心分析

图像形心(centroid)又称为图像的几何中心,它是指几何区域内所有像素坐标值在各方向上的平均。若区域的像素数量为W×H(其中W为宽度,H为高度),则几何中心可以用以下公式计算:

上一篇: MATLAB智能算法速成指南 -- 1.3 象征性变量的实战运用

下一篇: FLUENT 14实战教程 - 第1章4节:多维度下的流体运动与热量传递方程详解