实施VisualApplets

在“NormalizedcrossCorreslation.va”中,根据公式55 ,使用NCC算法识别图像中的对象。在图387中,你可以看到“NormalizedCrossCorrelation.vad”的基本设计结构。

“NormalizedCrossCorrelation.vad”的基本设计结构

图 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.tif”

图 388. 测试图像“PCB.tif”


本例中需要识别的对象是PCB板左下角的六个小孔。这些对象的尺寸为12x12像素。在NCC盒设计中(见图387 ),已实现了根据公式55定位这些对象的算法。有关相应公式的更多信息,请参阅链接和HierarchicalBox旁边的注释框。图389显示了HierarchicalBox NCC的内容。

HierarchicalBox NCC 的内容

图 389. HierarchicalBox NCC的内容


您可以按照下文所述将设计示例调整为您的图像和所选对象。如果您想使用灰度图像代替 RGB 图像,只需将算子 BaseRgbCamera 替换为算子 BaseGrayCamera 并删除算子 SelectComponent。

  1. 将算子 FIRkernelNXM_12x12 的大小调整为您要在图像中识别的对象的尺寸。

  2. 在“Properties”下的 HierarchicalBox NCC 上“单击鼠标右键”,您可以设置要查找的对象的像素数“K”。对象大小为 12x12 时,K 为 144。在“Properties”下,您还可以调整二值化阈值。 此阈值用于在结果图像中以“1”可视化对象的位置。

  3. 在 HierarchicalBox NCC 中,将内核列数和行数调整为 CONST 算子 One 输出端的对象尺寸。

  4. 加载要识别的对象的像素值文件(即 ) 到 FIRoperatorNxM IxR 中的 HierarchicalBox NCC。您可以使用程序“NCC.m”来创建此文件(“R.txt”)。

  5. 将同一个文件加载到 HierarchicalBox Sigma_R 中的 FIRoperatornxM Rmean_Mult_K NCC 中。

  6. 将文件“Rpower2.txt”(通过 Matlab 程序“NCC.m”创建)加载到 FIRoperatorNxM Sum_R_R 中的 HierarchicalBox Sigma_R. 该文件的内容是对象像素值(除以 2)的平方 .

在 HierarchicalBox 除法 (参见图 389)中,方程 的最终结果 55 是通过除法运算计算得出的 DIV。您可以在图 除法 中查看框 390.

的内容

图 390. 分层框部门的内容


除法运算使用六个小数位执行,即 的结果介于 -64 和 64 之间,而不是 -1 和 1。为了可视化识别出的对象的位置,结果图像使用 IS_GreaterEqual 运算符 阈值进行了二值化。在此示例中,阈值设置为 50。您可以直接在算子中更改此值,或者如上所述,通过“右键单击”框 NCC来更改。发送到 PC 的结果图像如图所示。 391. PCB 板左下角小孔位置的像素(见图 388)将获得值“1”,所有其他像素为“0”。结果图像通过 DMA 发送至 PC。或者,它也可以作为后续图像处理步骤的输入。

对象位置处值为“1”的结果图像(放大视图)

图 391. 结果图像,物体位置标记为“1”(放大视图)