在 "NormalizedcrossCorreslation.va" 中,根据公式 55 使用 NCC 算法在图像中识别对象。 在图 387 中,您可以看到 "NormalizedCrossCorrelation.vad" 的基本设计结构。
在一幅来自
Camera Link 基本配置 RGB 相机的图像中,
定义了尺寸为 12x12 像素的图像核, FIRkernelNxM 算子 12x12。核大小取决于要识别的对象。
该对象与公式
中的 55参考图像相同。
使用算子选择一个颜色分量(此处为红色), SelectComponent 以便根据公式在
55 HierarchicalBox NCC中通过 NCC 算法识别对象。结果是一个与原始输入图像大小相同的二值图像,在识别出的对象位置处值为“1”,在任何其他位置处值为“0”,该图像通过 DMA 发送到 PC。
此示例针对 RGB 测试图像“PCB.tif”进行配置,您可以在 VisualApplets 安装目录下的
examples\Processing\ObjectFeatures\NormalizedCrossCorrelation 找到它。
该图像的尺寸为 1024x712 像素。如图 388 所示,显示了测试图像。
PCB 板左下角的六个小孔是本示例中要识别的对象。此处对象尺寸为 12x12 像素。 在框 NCC(见图 387)的设计中,实现了用于定位这些对象的根据公式 55 的算法。 有关相应公式部分的更多信息,请参见链接和 HierarchicalbBoxes 旁边的注释框。在图 389 中,您可以看到 HierarchicalBox NCC 的内容。
您可以按照以下说明将设计示例调整为您的图像和所选对象。如果您想使用灰度图像而不是 RGB 图像,只需将算子 BaseRgbCamera 替换为算子 BaseGrayCamera,并删除算子 SelectComponent。
-
将算子 FIRkernelNXM_12x12 的大小调整为您要在图像中识别的对象的尺寸。
-
在“Properties”下的 HierarchicalBox NCC 上点击“鼠标右键”,您可以设置要查找的对象的像素数“K”。对象大小为 12x12 时,K 为 144。在“Properties”下,您还可以调整二值化阈值。 此阈值用于在结果图像中用“1”可视化对象的位置。
-
在 HierarchicalBox NCC 中的 CONST 算子 One 的输出端,将核的列数和行数调整为对象尺寸。
-
加载要识别的对象的像素值文件(即
)
至 FIRoperatorNxM IxR 在 HierarchicalBox 中 NCC。您可以使用程序 "NCC.m" 创建该文件("R.txt")。
-
将同 一个文件加载到 HierarchicalBox Sigma_R 中 HierarchicalBox NCC 内的 FIRoperatornxM Rmean_Mult_K 中。
-
将文件 "Rpower2.txt"(使用 Matlab 程序 "NCC.m" 创建)加载到 FIRoperatorNxM Sum_R_R 在 HierarchicalBox 中 Sigma_R。 该文件的内容为对象像素值(除以 2)的平方
.
在 HierarchicalBox 中 Division (见图 389)公式
的 55
最终结果通过除法运算计算得出 DIV中。您可以看到该方框的内容 Division 中看到框 390.
除法运算使用六个小数位执行,即
的结果介于 -64 和 64 之间,而不是 -1 和 1。为了可视化识别出的对象的位置,结果图像使用 IS_GreaterEqual 算子
阈值进行二值化处理。在此示例中,阈值设置为 50。您可以直接在算子中更改该值,或者如上所述通过“右键单击”方框
NCC进行更改。发送到 PC 的结果图像如图 391所示。PCB 板左下角小孔位置处的像素(见图 388)获得值“1”,所有其他像素获得值“0”。结果图像通过 DMA 发送到 PC。或者,它也可以作为后续图像处理步骤的输入。

上一页

