# DetectBlobs

La fonction DetectBlobs effectue une forme d’analyse des objets blob, appelée « analyse de connectivité », sur une région d’intérêt (ROI). Pendant cette analyse, les pixels de la ROI sont divisés en deux catégories, objet blob ou arrière-plan, en fonction d’une valeur de niveaux de gris Seuil. Elle sépare tous les pixels inférieurs au seuil et les classe dans la catégorie des « noirs », et fait de même avec les pixels supérieurs au seuil, en les classant dans la catégorie des « blancs ».

Les pixels avec des valeurs similaires sont regroupés en fonction de leur « couleur », et de leur « contact » (ou non) avec les pixels voisins. Les pixels d’arrière-plan peuvent être connectés à leurs voisins s’ils sont en contact au niveau de l’un des côtés. En revanche, les pixels d’objet blob peuvent être connectés par l’intermédiaire d’un de leurs côtés ET d’un de leurs coins.

Une fois l’image traitée, elle est segmentée en valeurs de pixels d’objet blob et d’arrière-plan. Les objets blob trouvés dans la ROI sont identifiés en fonction de leurs caractéristiques physiques et des valeurs qui leur sont attribuées, notamment l’emplacement de l’objet blob dans l’image (ses coordonnées Ligne, Colonne), sa surface, son périmètre, sa compacité et son élongation. Les données des objets blob extraits sont stockées et indiquées dans une structure de données Blobs.

Cette fonction est la première étape de l’analyse des objets blob. FindBlobs et SortBlobs utilisent tous deux des Références à des cellules à la structure de données Blobs d’une fonction DetectBlobs : soit directement, soit par le biais d’un Audit.

## DetectBlobs – Entrées

Paramètre | Description
Image | This parameter must reference a spreadsheet cell that contains an Image data structure; by default, this parameter references A0, the cell containing the data structure. This parameter can also reference other Image data structures, such as those returned by the Image Vision Data Access functions or Fonctions de conversion de coordonnées.
Repère | Définit la région d’intérêt (ROI) par rapport à l’entrée d’un Fixture ou à la sortie du système de coordonnées de l’image d’une fonction Outils de vision. En définissant la ROI par rapport à un Repère, toute rotation ou translation de ce dernier entraînera systématiquement une rotation/translation de la ROI, le cas échéant. Le paramètre par défaut est (0,0,0), le coin supérieur gauche de l’image.
X | L’offset en X (coordonnées de l’image).
Y | L’offset en Y (coordonnées de l’image).
Thêta | La rotation par rapport à l’axe X de l’image, dans le système de coordonnées de l’image (+/-360 degrés dans le sens horaire).
Région | Aussi appelé région d’intérêt (ROI), spécifie la région de l’image qui fait l’objet d’une analyse. Effectuez un double-clic sur le paramètre Région pour créer un Mode Graphiques interactifs que vous pouvez transformer et faire pivoter. Sélectionnez ce paramètre et cliquez sur le bouton Agrandir la région dans la barre d’outils Modification du projet de la feuille de propriétés pour agrandir automatiquement la région pour qu’elle couvre l’intégralité de l’image.
X | L’offset en X de l’origine (coordonnées du repère).
Y | L’offset en Y de l’origine (coordonnées du repère).
Largeur | La dimension le long de l’axe des x de la région.
Hauteur | La dimension le long de l’axe des y de la région.
Angle | Orientation du repère.
Courbure | Écart angulaire entre l’axe X de la région et la ligne de la limite opposée.
Remarque : Les paramètres Repère et Région doivent être ajustés en fonction des limites de l’image. S’ils sont hors limites, la fonction renvoie #ERR.
Région externe | Ce paramètre utilise les Références à des cellules pour un Annulus, un Circle, une Region, EditAnnulus EditCircle, EditCompositeRegion, EditPolygon et EditRegion. Lorsque ce paramètre est utilisé, la fonction ignore les paramètres Région et de Repère et inspecte la zone d’image spécifiée par la région référencée. Si un contrôle EditCompositeRegion est référencé, la zone d’inspection peut être un mélange de formes. Chaque forme de la région composite peut être affectée, ajoutée ou soustraite (masquage), à la zone d’inspection. Remarque : Si ce paramètre a été défini comme une référence à une région externe, pour utiliser la région interne de la fonction, ce paramètre doit être manuellement mis à zéro en remplaçant la référence de la cellule par la valeur 0. Dans le cas contraire, la fonction continue de faire référence à la région externe.
Nombre à classer | Détermine le nombre d’objets blob à classer.
0 | Renvoie tous les objets blob qui répondent aux paramètres de couleur et de taille spécifiés dans les paramètres Couleur pour objet blob/Couleur pour arrière-plan et Surface : Min./Surface : Max.
1 à 4096 (par défaut = 1) | Renvoie tous les objets blobs, jusqu’au nombre prédéfini, qui répondent aux paramètres de couleur et de taille spécifiés dans les paramètres Couleur pour objet blob/Couleur pour arrière-plan et Surface : Min./Surface : Max. Si plusieurs objets blob sont trouvés, ceux ayant la plus grande surface sont sélectionnés.
Remarque : Si la valeur du paramètre Nombre à classer est supérieure à zéro, DetectBlobs insère automatiquement un tableau de résultats contenant maximum 10 entrées, correspondant aux 10 premiers objets blob de la structure de données Blobs. Pour afficher davantage d’entrées, vous pouvez agrandir le tableau en copiant la dernière ligne et en collant des lignes supplémentaires à la fin. N’oubliez pas d’incrémenter le numéro d’index des nouvelles lignes afin que le bon objet blob soit indexé.
Seuil | Définit la valeur de niveaux de gris utilisée pour séparer les pixels d’objets blob de ceux de l’arrière-plan. Cette valeur peut être déterminée en utilisant le paramètre automatique de la fonction DetectBlobs (paramètre par défaut), configurée manuellement par tâtonnement, ou définie comme Références à des cellules aux résultats calculés de la fonction Histogram.
-1 (par défaut) | La fonction évalue et calcule automatiquement une valeur seuil basée sur les statistiques de niveaux de gris de l’image.
0 à 255 | Définit une valeur de niveaux de gris Seuil, entre 0 et 255.
Inclure les trous | Détermine l’une des deux méthodes de traitement des statistiques cumulées en trous.
0 = OFF (par défaut) | Active la prise en compte des trous dans les statistiques des objets blob. Par exemple, l’ajout de trous à un objet blob a pour effet de réduire sa surface. Remarque : Lorsqu’il est désactivé (OFF), les objets blob qui sont des trous (dans un autre objet blob) sont indiqués. Dans l’exemple ci-dessous, l’objet blob 1, un trou dans l’objet blob 0, est indiqué. Dans les statistiques d’objets blob, la valeur de la zone d’objet blob 0 (ligne supérieure) ne contient pas la zone de l’objet blob 1 (ligne inférieure).
1 = ON | Désactive la prise en compte des trous dans les statistiques des objets blob. Par exemple, l’ajout de trous à un objet blob n’affecte pas sa surface. Remarque : Lorsqu’il est activé (ON), les objets blob qui sont des trous (dans un autre objet blob) sont ignorés. Dans l’exemple ci-dessous, un trou dans l’objet blob 0 est ignoré, et un seul objet blob (0) est indiqué. Dans les statistiques d’objets blob, la valeur de la zone d’objet blob 0 contient la totalité de la zone d’objet blob, y compris le trou.
Blobs sur frontière | Détermine l’une des deux méthodes de gestion des objets blob chevauchant la limite de la ROI.
0 = OFF | Exclut les objets blob qui chevauchent la limite de la ROI. Tous les objets blob qui chevauchent la limite de la ROI ne sont pas inclus dans la structure de données Blobs finale.
1 = ON (par défaut) | Inclut les objets blob qui chevauchent la limite de la ROI. Tous les objets blob qui chevauchent la limite de la ROI sont inclus dans la structure de données Blobs finale (à condition qu’ils soient compris dans les paramètres spécifiés de Couleur pour objet blob/Couleur pour arrière-plan et de Surface : Min./Surface : Max.).
Couleur : Blob | Détermine la couleur de l’objet blob.
0 = noir | Renvoie uniquement les objets blob dont les niveaux de gris sont inférieurs à la valeur Seuil définie.
1 = blanc | Renvoie uniquement les objets blob dont les niveaux de gris sont supérieurs à la valeur Seuil définie.
2 = indifférent (par défaut) | La couleur de l’objet blob n’est pas déterminée.
Remarque : Lorsque les paramètres Couleur : Objet blob et Couleur : Arrière-plan sont définis avec la même couleur, les objets blob ne sont pas indiqués. Par exemple, lorsque Couleur : Objet blob est défini sur Noir et Couleur : Arrière-plan est également réglé sur noir, les objets blob ne sont pas indiqués.
Couleur : Objet blob = Noir Couleur : Arrière-plan = Noir | Couleur : Objet blob = indifférent, ou blanc Couleur : Arrière-plan = Noir
Cependant, même si les paramètres Couleur : Objet blob et Couleur : Arrière-plan ont la même couleur, les objets blob sont signalés lorsqu’ils sont dans une zone de couleur opposée (voir les exemples ci-dessous). Si une partie de l’objet blob n’est pas contenue dans la zone de couleur opposée, il n’est pas indiqué.
Couleur : Objet blob = Noir Couleur : Arrière-plan = Noir | Couleur : Objet blob = Blanc Couleur : Arrière-plan = Blanc
Couleur : Arrière-plan | Détermine la couleur de l’arrière-plan dans l’image acquise. L’analyse de connectivité avec 8 voisins est effectuée sur le premier plan, tandis que celle avec 4 voisins est effectuée sur l’arrière-plan.
0 = noir
1 = Blanc (par défaut)
Surface : Min | Détermine une limite de surface minimale, sous la forme d’un nombre de pixels, pour tous les objets blob renvoyés (par défaut = 100). Seuls les objets blob dont la surface est supérieure au paramètre Surface : Min. sont renvoyés. La plage de paramètres est la suivante : Limite inférieure : 0 Limite supérieure : Résolution (largeur × hauteur) du système de vision connecté. Par exemple, lorsqu’il est connecté au système de vision In-Sight D902, la plage de paramètres est comprise entre 0 et 2 304 000 (1920×1200).
Surface : Max | Détermine une limite de surface maximale, sous la forme d’un nombre de pixels, pour tous les objets blob renvoyés (par défaut = 100000). Seuls les objets blob dont la surface est inférieure au paramètre Surface : Max. sont renvoyés. La plage de paramètres est la suivante : Limite inférieure : 0 Limite supérieure : Résolution (largeur × hauteur) du système de vision connecté. Par exemple, lorsqu’il est connecté au système de vision In-Sight D902, la plage de paramètres est comprise entre 0 et 2 304 000 (1920×1200).
Afficher | Détermine le mode d’affichage des graphiques superposés de DetectBlobs sur l’image.
0 = masquer tout (par défaut) | Tous les graphiques sont masqués, sauf lorsque la cellule contenant la fonction DetectBlobs est mise en évidence dans la feuille de calcul.
1 = graphiques de résultats uniquement | Les contours des objets blob extraits sont toujours affichés.
2 = graphiques d’entrées et de résultats | La région d’image d’entrée et les contours des objets blob extraits sont toujours affichés.

## DetectBlobs – Sorties

Renvoie | Une structure de données Blobs contenant les objets blob extraits de l’image, ou #ERR si l’un des paramètres d’entrée est incorrect.
Résultats | Lorsque la fonction DetectBlobs est insérée dans une cellule, un tableau de résultats est créé dans la feuille de calcul à l’aide des Blobs Vision Data Access functions. Remarque : Si le Nombre à classer est égal à 0, le tableau est composé uniquement de la fonction GetNFound. Si la valeur du paramètre Nombre à classer est supérieure à zéro, DetectBlobs insère automatiquement un tableau de résultats contenant maximum 10 entrées, correspondant aux 10 premiers objets blob de la structure de données Blobs. Pour afficher davantage d’entrées, vous pouvez agrandir le tableau en copiant la dernière ligne et en collant des lignes supplémentaires à la fin. N’oubliez pas d’incrémenter le numéro d’index des nouvelles lignes afin que le bon objet blob soit indexé.
Label | Nom de la fonction | Description
X | GetX(Blobs, Index de blob) | Renvoie l’abscisse du centre de gravité d’un objet blob.
Y | GetY(Blobs, Index de blob) | Renvoie l’ordonnée du centre de gravité d’un objet blob.
Angle | GetAngle(Blobs, Index de blob) | Renvoie l’angle de l’axe principal (majeur) d’un objet blob par rapport à l’axe Y.
Couleur | GetColor(Blobs, Index de blob) | Renvoie la valeur de couleur (0 = noir, 1 = blanc) d’un objet blob.
Score | GetScore(Blobs, Index de blob) | Une mesure de la correspondance d’un objet blob avec les critères d’une fonction FindBlobs.
Surface | GetArea(Blobs, Index de blob) | Renvoie la surface d’un objet blob (en pixels). Remarque : Si l’objet blob comporte des trous, la valeur de la surface modifie l’état de la case à cocher Inclure les trous.
Elongation | GetElongation(Blobs, Index de blob) | Renvoie une valeur associée à l’étirement des pixels d’un objet blob vis-à-vis de son centre de gravité. Par exemple, un cercle peut avoir une valeur Elongation de 0, tandis que celle d’un clou peut être élevée.
Trous | GetHoles(Blobs, Index de blob) | Renvoie le nombre de trous dans un objet blob. Remarque : Seuls les trous dont la surface est supérieure à la valeur Surface : Min. sont renvoyés.
Périmètre | GetPerimeter(Blobs, Index de blob) | Renvoie la longueur de la limite autour de l’objet blob. Le périmètre est calculé en comptant les bords externes des pixels délimitent l’objet blob.
Compacité | GetSpread(Blobs, Index de blob) | Renvoie une valeur associée à l’éloignement des pixels d’un objet blob vis-à-vis de son centre de gravité. Par exemple, un objet de forme circulaire a une valeur de compacité inférieure à celle d’un objet de forme ovale.

## DetectBlobs – Exemple

La fonction DetectBlobs permet d’identifier et repérer les objets blob de pixels connectés, qui peuvent être de différentes formes et tailles. Cet exemple illustre comment les informations renvoyées dans le tableau de résultats de la structure de données DetectBlobs se rapportent aux objets blob trouvés. L’utilisation des informations à des fins de tri et de filtrage ultérieurs des objets blob, en fonction de leurs caractéristiques, est également expliquée.

L’image suivante permet de plus facilement interpréter les valeurs renvoyées dans le tableau de résultats de la fonction DetectBlobs :

Une fonction DetectBlobs a été insérée dans une cellule vide de la feuille de calcul. À partir des formes pertinentes, les paramètres de la feuille de propriété DetectBlobs ont été configurés comme suit :

- Image : Le paramètre par défaut est utilisé pour cet exemple. Ceci dit, il peut faire référence à n’importe quelle structure de données Image, comme une structure de données Image produite par une fonction Filter, qui traite l’image pour supprimer le bruit excessif avant d’analyser les objets blob.
- Repère : Le paramètre par défaut est utilisé, car l’image est fixe et ne sera pas tournée ou déplacée. Cependant, lorsque vous utilisez la fonction DetectBlobs sur des images qui font l’objet de mouvements, il est conseillé d’affecter la région de l’image à un Fixture.
- Région : La région de l’image est agrandie pour inclure toutes les formes dans l’analyse. En cliquant sur le paramètre Région, puis sur le bouton Agrandir la région dans la barre d’outils de la feuille de propriétés, la région est automatiquement étendue pour couvrir la totalité de l’image.
- Nombre à classer : Le Nombre à classer est défini sur six. Ce paramètre peut également être réglé sur 0 : dans ce cas, l’outil extrait automatiquement tous les objets blob qui répondent aux paramètres de couleur et de taille spécifiés dans les paramètres Couleur pour objet blob/Couleur pour arrière-plan et Surface : Min./Surface : Max.
- Seuil : Le paramètre par défaut est utilisé : il calcule automatiquement la valeur de niveaux de gris Seuil. Dans cette image, les différences des valeurs de niveaux de gris sont très prononcées, les pixels sombres et les pixels clairs sont facilement repérables. Lorsque la gradation plus subtile et le paramètre de seuil automatique séparent de façon moins pertinente les valeurs, l’utilisation des fonctions Histogram, par exemple HistHead ou HistTail, pour déterminer les intensités de niveaux de gris dans différentes régions de l’image, peut s’avérer très utile.
- Inclure les trous : Le paramètre par défaut est utilisé, prenant en compte les trous trouvés dans les objets blob. La surface globale des formes d’objets blob avec des trous a été réduite. Si la case à cocher Inclure les trous est cochée, les trous à l’intérieur des objets blob sont indiqués et la surface à l’intérieur des trous est alors ajoutée, augmentant ainsi la surface des objets blob avec des trous.
- Blobs sur frontière : Le paramètre par défaut est utilisé, incluant tous les objets blob qui chevauchent la limite de région de l’image. Avec ce paramètre, si l’image est déplacée vers la gauche et que le plus grand cercle et le plus petit carré chevauchent la limite la plus à gauche de la région de l’image, les parties de ces formes qui se trouvent encore à l’intérieur de la limite de la région sont extraites sous forme d’objets blob. En revanche, si la case n’est pas cochée, les objets blob en question sont ignorés.
- Surface : Min./Max. : Les paramètres par défaut sont utilisés. Ils permettent de filtrer les objets blob de la région pendant la phase d’extraction, évaluant ainsi les objets blob selon les paramètres de limite de surface minimale et maximale pour déterminer si la surface d’objet blob permet ou non de le classer comme tel.
- Afficher : Le paramètre par défaut est utilisé, ce qui permet d’afficher les graphiques de résultat uniquement lorsque la cellule contenant la structure de données Blobs est sélectionnée, comme dans l’exemple ci-dessous.

Après avoir configuré la feuille de propriétés DetectBlobs, une structure de données Blobs et un tableau de données de résultats sont générés.

Les valeurs renvoyées dans le tableau de résultats peuvent être utilisées pour filtrer et classer les objets blob, à l’aide des fonctions FindBlobs et SortBlobs. Par exemple, une fonction FindBlobs peut être insérée dans la feuille de calcul et faire référence à la fonction DetectBlobs. La fonction FindBlobs serait alors utilisée pour filtrer les objets blob en fonction de leur compacité. Ensuite, une fonction SortBlobs serait insérée dans la feuille de calcul et pourrait faire référence à la fonction FindBlobs récemment créée, afin de classer la liste des objets blob en fonction de leur position X, Y.