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

上一页

