# ViDiDetect

The ViDiDetect function allows you to create a deep learning-based defect detection solution, based on the Red Analyze tool in Unsupervised mode. With this tool, during the training phase you teach it only what a good part looks like, including any and all acceptable variations. Then, at runtime, it will discover any anomalies from the learned appearance, and return a deviation score and a pass/fail result.

To use the ViDiDetect function, perform the following:

1. After adding the function, open the ViDi Editor.

2. Add the images that will comprise your training set.

   Note: Only add images that are passing, acceptable versions. The tool will automatically remove images that are labeled as "Bad" from the training set.
3. Label the features that you expect to make up your model.
4. Train the tool.
5. Review your training images and verify that the results are correct.
6. Use your testing images to qualify the results.

## ViDiDetect Inputs

### General Tab

Parameter | Description
--- | ---
Image | This argument must reference a spreadsheet cell that contains a valid Image data structure; by default, the cell references A0, the cell containing the Image data structure returned by AcquireImage function.
External Fixture | Specifies a reference to a Fixture or Fixtures data structure. This fixture data will be passed into the ViDi tools, and will be used to define the views for each image. When using an external fixture, within the ViDi tool's Region of Interest (ROI), you will need to select External. Then, from the Image Database menu, select Update All Training Fixtures, and then modify the ViDi tool's ROI. You can also update the ViDi tool's reference to the external fixture data by selecting the ViDi data structure, right-click and select Update Training Fixtures.
Region | Also known as the Region of Interest (ROI), specifies the region of the image that undergoes analysis; creates an Interactive Graphics Mode that can be transformed and rotated. With this parameter selected, by pressing the Maximize Region button on the property sheet's Job Edit toolbar, the region will automatically be stretched to cover the entire image.
X | The x-offset of the origin, in fixture coordinates.
Y | The y-offset of the origin, in fixture coordinates.
Width | The dimension along the region's x-axis.
Height | The dimension along the region's y-axis.
Angle | The orientation, in fixture coordinates.
Show | Specifies the display mode for ViDiDetect tool's graphical overlays on top of the image.
0 = hide all (default) | All graphics will be hidden, except when the cell containing the ViDiDetect function is highlighted in the spreadsheet.
1 = result graphics only | The result graphics will be shown at all times.
4 = input graphics only | The input graphics will be shown at all times.
2 = input and result graphics | The input and result graphics will be displayed at all times.

### Runtime Tab

Allows access to ViDi Processing Tool Parameters that can be modified while the job is online. These parameters do not require that the tool be retrained. You can drag and drop these parameter to the spreadsheet, and publish them to the HMI for operator interaction.

## ViDiDetect Outputs

Returns | A ViDiDetect data structure, containing the results of the trained tool.
Results | After the ViDiDetect tool has been trained, a result table can be generated, based on the ViDi Results Vision Data Access Functions, by right-clicking on the function's data structure and selecting Insert Getters. Note: When the Vision Data Access functions are automatically generated, the default setting will auto-populate the first five features to the table. If there are more than five features, you will need to manually add them to the table. If you wish to display more entries, you can expand the table by copying the last row and pasting additional rows at the end; make sure to increment the index number of any newly-pasted row so that the proper feature is indexed.
| View | Index | Score | Lower Threshold | Upper Threshold | Passed | Region Count | Region Index | Score | Area | Perimeter | X | Y
❒ViDiDetect | ❒ViDiAnalyzeView | 0 | 0.410121 | 0.403586 | 0.424612 | 1 | 0 | 0 | #ERR | #ERR | #ERR | #ERR | #ERR
| ❒ViDiAnalyzeView | 1 | 0.610165 | 0.403586 | 0.4036 | 0 | 2 | 0 | 0.454911 | 4.7 | 8.8 | 882.2 | 786.6
|  |  |  |  |  |  |  | 1 | 0.46587 | 8.6 | 11.8 | 145.1 | 338
Function | Description
--- | ---
GetViDiAnalyzeView(ViDiDetect, ViewIndex) | Returns a ViDiAnalyzeView data structure, which extracts the results from the indexed view.
GetScore(ViDiAnalyzeView) | Returns the overall score of the view.
GetLowerThreshold(ViDiAnalyzeView) | Returns the lower threshold value being used by the Red Analyze tool that output the referenced ViDiAnalyzeView data structure.
GetUpperThreshold(ViDiAnalyzeView) | Returns the upper threshold value being used by the Red Analyze tool that output the referenced ViDiAnalyzeView data structure.
GetPassed(ViDiAnalyzeView) | Returns the pass/fail value (1 = Pass; 0 = Fail) output by the referenced ViDiAnalyzeView data structure.
GetRegionCount(ViDiAnalyzeView) | Returns the number of regions generated by the referenced ViDiAnalyzeView data structure.
GetScore(ViDiAnalyzeView, RegionIndex) | Returns the score of the specified region.
GetArea(ViDiAnalyzeView, RegionIndex) | Returns the area (in pixels) of referenced region contained within the referenced ViDiAnalyzeView data structure.
GetPerimeter(ViDiAnalyzeView, RegionIndex) | Returns the perimeter (in pixels) of referenced region contained within the referenced ViDiAnalyzeView data structure.
GetX(ViDiAnalyzeView, RegionIndex) | Returns the center X location of the region.
GetY(ViDiAnalyzeView, RegionIndex) | Returns returns the center Y location of the region.