这一节开始介绍如何进行灰度和彩色图像的测量。可以基于图像统计进行监测判断,例如一个区域中的平均密度水平。 根据图像统计特征,可以在灰度或彩色图像上完成许多机器视觉监测任务,例如监测成份的存在或缺失,监测部件的瑕疵,以及与参照物比较彩色成份。下面的图说明了进行灰度或彩色图像监测的基本步骤。
定义关注区
关注区(ROI)就是图像中的一块想要集中分析的区域。下图表述了ROI工具及其使用方法。关注区可以 通过交互式方式、编程序的方式,或者是图像遮罩来定义。
图标
|
工具名称
|
功能
|
|
选择工具
|
选择图像中的ROI,调整其控制点和轮廓的位置。
动作:点击ROI 或控制点。
|
|
点
|
选择图像中的一个像素。
动作: 点击像素的位置
|
|
线
|
在图像中画一条线
动作: 点击起点,并在终点再点一次。
|
|
矩形
|
在图像中画矩形或方框。
动作: 点击一个角,拖拽到对角。
|
|
椭圆
|
在图像中画椭圆或圆。
动作: 点击中心位置,拽到需要的大小。
|
|
多边形
|
在图像中画多边形。
动作:点击一次放置一个新顶点,双击完成ROI元素。
|
|
徒手区域
|
在图像中画一个徒手区域。
动作: 点击其实5 位置,拖拽成需要的形状,松开鼠标完成。
|
|
环形
|
在图像中画环形。
动作: 点击中心位置,拖拽到需要的大小。调整内外弧,调整起止角。
|
|
缩放
|
放大或缩小图像。
动作: 点击图像,按住<Shift>时点击为缩小,单击为放大。
|
|
摇摆
|
移动图像
动作: 点击起点,拖拽到需要的位置,放开鼠标键。
|
|
断开线
|
在图像中画断开的线。
动作: 点击一个位置放置一个顶点,双击完成ROI。
|
|
徒手线
|
在图像中画徒手线。
动作:点击起点拖拽成所需的形状,放开鼠标按钮,完成形状。
|
|
旋转矩形
|
在图像中画一个旋转的矩形。
动作: 点击一个角拖拽到对角建立矩形,然后点击矩形内的线拖拽调整旋转角度。
|
在画ROI时,如果希望ROI尽可能保持水平、垂直或对角,则同时按下 <Shift>键 。选择工具通过控制点或顶点定位ROI,意思是说光标的动作依据所交互的ROI不同而不同。 例如,如果鼠标在矩形的边上移动,光标变为提示可以点击或拖拽这条边以调整矩形的大小。如果要在一个图像显示环境中画多个ROI,那么按下<Ctrl>键 ,就可以画出其他的ROI。
交互式定义区域
有三种方式利用ROI工具交互式定义ROI:通过图像显示控件,在一个分立的浮动窗口中,或者作为ROI构建窗口的一部分。
在图像显示控件中定义ROI
要在图像显示控件中定义ROI,从工具模板中选择一个ROI工具 。
可以通过配置决定在控件中显示哪些工具。以下步骤用于在设计时配置ROI工具模板:
1. 右击ROI工具模板,并选择 Visible Items?ROI Tool Button Visibility。
2. 选除不希望在ROI工具模板中出现的工具。如果不想出现任何工具,点击
All Hidden。
3. 点击
OK 完成修改。
要在程序中读取或设置ROI,应适用图像显示控件中的属性节点。
在外部窗口中定义ROI
下面的列表介绍如何在外部窗口显示和处理工具模板。在
Vision Utilities?Region of Interest 模板中可以找到所有下面的模块。
- IMAQ WindToolsShow 模块用于在外部浮动窗口中显示工具窗口。
- IMAQ WindToolsSetup 用于配置工具窗口的外观。
- IMAQ WindToolsMove 用于移动工具模板
- IMAQ WindToolsClose用于关闭工具模板
说明 如果想在外部窗口画一个ROI又不想显示工具模板, 适用
IMAQ WindToolsSelect 模块。该模块可以从工具模板中选择一个外形而不打开模板。
使用ROI构造器定义ROI
IMAQ ConstructROI 能将LabVIEW的建模窗口合并到应用程序中,以便选择ROI。这个建模窗口叫做ROI构造器,它会停止运行应用程序直到用户选择了一个ROI,或则在点击了
Cancel
退出外部窗口。由于可以节省编写相似代码的工作,所以ROI构造器很方便。如果需要 定制ROI构造器以提供比IMAQ ConstructROI更多的功能, 可以适用图像显示控件或外部显示窗口实现自己的ROI构造器。
在ROI构造器窗口中启动ROI构造器并定义一个ROI的完整步骤如下:
1. 适用
MAQ ConstructROI 模块在ROI构造器窗口中显示图像和工具模板。如下图所示:
1) 从工具模板中选择一个ROI工具。
2) 在图像上画一个ROI。调整大小和位置直到其指明的区域满足期望。
3) 点击
OK 输出一个选择区域的描述符。可以将ROI的描述符输入给许多分析和处理函数。也可以将ROI描述符转换成用于在图像中处理选择区域的图像遮罩。使用
IMAQ ROIToMask 模块将ROI描述符转换为图像遮罩。
还可以利用
IMAQ Select Rectangle,
IMAQ Select Point,
IMAQ Select Line, 以及
IMAQ Select Annulus 定义关注区。完整的使用步骤如下:
1. 调用上述模块在ROI构造器窗口显示图像。 只能使用函数制定工具。
2. 从工具模板中选择一个ROI工具。
3. 在图像上画一个ROI。调整ROI的大小和位置直到覆盖了需要处理的区域。
4. 点击
OK 输出一个ROI的简单描述。可以使用这个描述作为测量灰度密度模块的输入:
- IMAQ Light Meter (Point)―利用IMAQ的输出选择点。
- IMAQ Light Meter (Line)―利用IMAQ的输出选择线
- IMAQ Light Meter (Rectangle)―利用IMAQ的输出选择矩形
工具模板转换
下图所显示的工具模板是外部显示窗口和ROI构造器的一部分。当在显示窗口或ROI构造器中处理一个区域工具时,工具模板自动从左面的模板转换到右面的模板。右面的模板显示所画的ROI的特征。
|
1 像素密度
|
4 ROI的锚点坐标
|
2 图像类型指示 (8-bit, Signed 16-bit, Unsigned 16-bit, Float, Complex, 32-bit RGB, HSL, 64-bit RGB)
|
5 活动ROI的大小
|
3 当前活动图像窗口上鼠标的坐标
|
6 线区域的长度和水平夹角
|
通过编程定义区域
在自动化应用程序中,可能需要通过编程定义ROI。可以采用两种方式编程定义区域:
- 指定ROI描述符的元素,其元素描述如下:
- - Global rectangle(通用矩形)―四个描述矩形边缘的整数包含ROI描述符中的所有形状。
- - Contours(轮廓线)―每个形状都是定义一个ROI,如下所示:
- ID(标识)―如果轮廓是ROI的外沿或内沿,则给出。如果轮廓是外沿,则包含在其中的所有区域都被认作ROI的一部份。由于外轮廓首先计算,内轮廓覆盖外轮廓,提供了在外轮廓内部派出区域的能力。
- Type(类型)―轮廓的形状类型。
- Coordinates(坐标)―一个包含定义轮廓的坐标数组。
- 通过提供 表述所要定义的区域的基本参数指定区域。例如,通过提供x坐标和y坐标定义一个点。提供起点和终点定义一条线。提供左上角和右下角坐标以及旋转角度定义一个矩形。
关注区转换程序可以将简单的数据类型,如点,线,矩形,以及环形,转换成ROI描述符。使用下列模块可以将使用简单描述编码表示的ROI转换成对应的ROI描述符:
- IMAQ Convert Point to ROI―转换由x-和y-坐标所表示的点。
- IMAQ Convert Line to ROI―转换由起点和终点所表示的线。
- IMAQ Convert Rectangle to ROI―转换由左上角,右下角以及转角所表示的矩形。
- IMAQ Convert Annulus to ROI―转换由中心点,内外弧,和起止角表示的环。
- IMAQ Convert Rectangle to ROI (Polygon)―将左上角,右下角以及转角所表示的矩形转换为一个代表矩形的多边形ROI描述符。
使用下列模块可以将ROI描述符所表示的ROI轮廓转换成轮廓的简单描述:
- IMAQ Convert ROI to Point―输出又x-和y-坐标代表的点。
- IMAQ Convert ROI to Line―输出由起点和终点代表的线。
- IMAQ Convert ROI to Rectangle―输出由左上角,右下角和转角所代表的矩形。
- IMAQ Convert ROI to Annulus―输出由中心点,内外弧,和起止角所表示的环。
使用遮罩定义区域
可以使用图像遮罩定义处理区域。图像遮罩是一个与要处理图像相同或小于大小的8-Bit图像。图像遮罩中的像素决定所处理的图像中所对应的像素是否被处理。如果图像遮罩中像素是一个不为0的值,那么所处理图像中对应的像素进行处理。如果图像遮罩中的像素值为0,所处理的图像中地对应像素保持不变。
图像遮罩用于对图像进行颗粒上的密度测量。首先,将图像分割成一个新的二值图像。可以将二值图像或符号版的二值图像输入给密度测量函数。如果需要进行彩色比较,使用
IMAQ MaskToROI将二值图像转换成ROI描述符。
测量灰度统计数据
利用测光表或定量分析函数可以测量灰度统计数据。使用重心函数可以获得图像的能量中心。
IMAQ Light Meter (Point)模块用于测量图像中一个点的量度。
IMAQ Light Meter (Line) 用于得到图像中沿着一条线的像素值统计数据:平均密度,标准差,最小密度,以及最大密度。
IMAQ Light Meter (Rectangle)模块用于获得图像中一个矩形内的像素值统计数据。
IMAQ Quantify 模块用于获得整个图像或图像中独立区域内部区域的附属统计信息:平均密度,标准差,最小密度,最大密度,面积,以及所分析图像的百分比。可以用一符号图像遮罩指定图像中的区域。符号图像遮罩是一个已处理过的二值图像,其遮罩中的每个区域都有唯一的密度值。利用
IMAQ Label 模块为图像遮罩标号。
IMAQ Centroid 模块用于计算图像或图像中一个区域的能量重心。
测量彩色统计数据
许多图像处理和分析函数适用于8-bit 和16-bit 图像。然而也可以分析和处理彩色图像的单独成份。
使用
IMAQ ExtractColorPlanes模块,可以见彩色图像拆分成原始成份的各种集合,例如RGB (红,绿,和蓝), HSI (色调, 饱和度,和明暗度), HSL (色调, 饱和度,和流明度), 或 HSV (色调, 饱和度,和值)。每个成份都成为一个 8-bit 或 16-bit 的图像,可以向任何灰度图像一样处理。适用
IMAQ ReplaceColorPlane 模块,可以将三个8-bit 或 16-bit 的图像集合重新装配成一个彩色图像,这时每一个图像就成为三个原始成份之一。 下图演示了如何将32-bit 和 64-bit 彩色图像拆分成它们的三个原始成份。
IMAQ ExtractSingleColorPlane 或
IMAQ ExtractColorPlanes 模块用于将彩色图像的红,绿,蓝,色调,饱和度,强度,流明,或彩色图像的值平面提取为一个8-bit图像。
使用
IMAQ IntegerToColorValue 模块可以将一个采用32-bit整数编码的彩色像素分解成单独的成份。使用
IMAQ RGBToColor 2可以RGB成份表示的像素值转换成其他色彩模型。使用
IMAQ ColorToRGB 可以将其他彩色模式的成份转换成RGB。
比较色彩
利用NI Vision的色彩匹配能力可以比较或估计图像或图像区域中色彩的内容。使用色彩匹配进行比较色彩的完整步骤如下:
1. 选择一个包含彩色信息的参考图像。彩色信息可以由多种色彩构成。
2. 使用整个图像或图像中的一个区域通过
IMAQ ColorLearn模块学习色彩信息,输出的色谱包含学习到的色彩信息的简洁描述。更多内容详见
NI 视觉概念手册,第15章,色彩检查。这个色谱代表学习到的色彩信息用于所有匹配运算的子过程。
3. 定义一个图像或图像中的多个区域作为检测或比较的区域。
4. 使用
IMAQ ColorMatch 模块将学到的色彩信息与检测区域的色彩信息进行比较。该模块返回一个分值表示匹配的紧密度。可以指定一个
最小匹配值, 表示输入色彩信息和图像中每个指定区域是否存在匹配。
5. 使用色彩匹配分值作为参考色彩信息与被比较的图像区域色彩信息相似度的度量值。
学习色彩信息
在学习色彩信息的时候,需要仔细选择一个图像或图像中的一个区域,其中包含了想要学习的色彩信息,选择所要学习的色彩信息的详细程度, 选择那些色彩在处理期间要忽略。
指定要学习的色彩信息
由于色彩匹配仅仅使用色彩信息来测量相似度,图像或图像区域代表的物体应该仅包含代表物体的有意义的颜色,如下图A B所示,B 是不合适的,其中包含了背景颜色。
下面的部分介绍什么时候学习整个图像、图像中一个区域或多个区域中的色彩信息。
使用整个图像
可以使用整个图像来学习代表图像整体色彩分布的色谱。例如在纺织品鉴定的应用中,整个图像可以代表与特定纺织品类型的色彩信息,如下图所示。
使用图像中的一个区域
可以使用图像中的一个区域提供用于比较的色彩信息。区域有助于提取图像中的有用色彩信息。下图是一个使用包含应用中有重要色彩信息的区域的例子。
使用图像中的多个区域
光的相互作用在物体表面形成物体的可见颜色。表面颜色取决于光照的方向以及观察的方向。两个完全相同的物体由于位置的不同或光照条件的不同可能有不同的外观。
下图说明了光线在保险丝的3维表面的不同反射,所导致的同样的保险丝 稍微不同的色彩。对比一下上面一排和下面一排的3安保险丝可以发现,不同的光线反射导致相同的保险丝的不同色谱。
如果画一个上排中3安保险丝的关注区来学习色谱,然后对上排的3安保险丝进行色彩匹配,会得到接近1000的非常高的匹配分值。 然而,对于下排的3安保险丝的匹配分值将低到500附近。这一问题会导致保险丝盒检测程序的色彩不匹配。
NI Vision的色彩学习算法使用一种聚集处理从图像中的一个或多个区域 中找到样板颜色。在学习阶段要为所有3安保险丝建立样板色谱,首先在上排的3安保险丝周围画一个ROI,按住<Ctrl>键,再下排3安保险丝周围画另外一个ROI。新的3安保险丝样板色谱会更好,导致更高的匹配分值,两个保险丝的匹配分值接近800。可以使用任意多个样本来学习样板色谱来制定模板。
选择色彩样板灵敏度
在学习色彩时,需要为指定的色彩信息指定敏感度。图像很少能利用较低的灵敏度就可以在彩色颗粒上很好的分割开,更多的是那种颜色彩色颗粒是紧挨着的图像。使用
IMAQ ColorLearn 模块的
Color Sensitivity 控件可以指定用于表示颜色的粒度。
忽略学习的颜色
将输入色谱矩阵的对应成份用-1替换,可在色彩匹配中忽略某些色彩成份。例如,用-1替换色谱中最后的成份,白色就会在色彩匹配处理时被忽略。用色谱中最后的成份替换第二个,黑色就会在色彩匹配处理时被忽略。
要忽略色彩匹配中的其他色彩成分,找到色谱在应颜色盘的分桶中对应的索引,每个桶对应色谱矩阵中的一个成份。忽略某些色彩,如背景色,导致更精确的色彩匹配值。忽略背景色也提高了色彩匹配处理中定义关注区时的灵活性。忽略某些色彩,例如金属表面闪光所形成的白色,还可以改善色彩匹配的精度。应试验从图像的不同部分学习彩色信息,以决定忽略那些颜色。关于颜色盘和色桶的更多信息,参见
NI 视觉手册,第15章,色彩检测。
本文出自 51CTO.COM技术博客