在“NormalizedcrossCorreslation.va”中,根据公式 55 使用 NCC 算法在图像中识别对象。 图 415 展示了“NormalizedCrossCorrelation.va”的基本设计结构。
在一幅来自
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 像素。如图 416 所示,显示了测试图像。
PCB 板左下角的六个小孔是本示例中要识别的对象。此处对象尺寸为 12x12 像素。 在框 NCC(参见图 415)的设计中,实现了根据公式 55 定位这些对象的算法。请参阅链接和 HierarchicalBox 旁边的注释框,了解有关相应公式部分的更多信息。在图 417 中,您可以看到 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 (见图 417)公式
的 55
最终结果通过除法运算计算得出 DIV中。您可以看到该方框的内容 Division 中看到框 418.
除法运算使用六个小数位执行,即
的结果介于 -64 和 64 之间,而不是 -1 和 1。为了可视化识别出的对象的位置,结果图像使用 IS_GreaterEqual 算子
阈值进行二值化处理。在此示例中,阈值设置为 50。您可以直接在算子中更改该值,或者如上所述通过“右键单击”方框
NCC进行更改。发送到 PC 的结果图像如图 419所示。PCB 板左下角小孔位置处的像素(见图 416)获得值“1”,所有其他像素获得值“0”。结果图像通过 DMA 发送到 PC。或者,它也可以作为后续图像处理步骤的输入。

上一页

