Foire aux questions#

Quelles sont les différences entre la CMUcam1 et la CMUcam2 ?#

Introduction#

La CMUcam2 inclut toutes les fonctionnalités de la CMUcam1 sous une forme améliorée, et bien plus encore. Ci-dessous, nous décrivons brièvement les nouvelles fonctionnalités et les différences. Vous pourriez aussi consulter la réponse à la question de savoir comment décider s’il faut acheter une CMUcam1 ou une CMUcam2.

Aperçu du matériel#

Il existe deux différences matérielles principales qui sont importantes : la CMUcam2 utilise un processeur différent de celui de la CMUcam1 et la CMUcam2 intègre une puce de mémoire tampon d’image, ce que ne fait pas la CMUcam1.

La CMUcam2 utilise le processeur SX52 et la CMUcam1 utilise le processeur SX28, tous deux issus de la série de processeurs SX d”Ubicom. Dans les deux cas, le processeur fonctionne à 75 MHz, il n’y a donc aucune différence de vitesse de processeur ou de puissance de calcul. Les avantages du processeur SX52 sont qu’il dispose de plus de RAM (262 contre 136 octets), de plus de ROM (4096 contre 2048 mots) et de plus de broches d’E/S. Plus de RAM et de ROM signifiait que nous pouvions écrire du code plus complexe, ce qui nous a permis d’intégrer plus de fonctionnalités dans la CMUcam2. Le plus grand nombre de broches d’E/S signifiait qu’il nous restait plus de broches disponibles pour d’autres fonctions – comme plus de servos, plus de cavaliers de configuration, etc.

La grande différence entre les deux systèmes est que la CMUcam2 inclut la puce de mémoire tampon d’image AL422B d’AverLogic, ce que ne fait pas la CMUcam1. Cela permet au matériel de la CMUcam2 de capturer rapidement une seule image complète et de la stocker dans la mémoire tampon d’image. Cela présente un certain nombre d’avantages :

  • Traitement plus complexe. Sur la CMUcam1, le processeur devait traiter le flux de données de pixels à la volée, au fur et à mesure de sa sortie par le module caméra. Cette conception contribuait à réduire la complexité et le coût du matériel du système. Cependant, elle limitait la complexité du traitement, car celui-ci devait être effectué en temps réel entre les pixels ou entre les rangées de l’image. Comme le processeur de la CMUcam2 accède aux données de pixels depuis la mémoire tampon d’image à son propre rythme, il peut effectuer un traitement plus complexe par pixel.

  • Traitement plus rapide. La contrepartie du fait de ne plus avoir à rester synchronisé avec le flux de pixels du module caméra est que le processeur n’a pas à attendre le module caméra lorsqu’il a besoin de données de pixels. L’élimination de ce temps d’attente signifie que le processeur de la CMUcam2 peut en réalité traiter une image plus rapidement que ne le peut la CMUcam1, même si le processeur n’est pas plus puissant.

  • Opérations multiples par image. Comme l’image stockée dans la mémoire tampon d’image ne change pas, la CMUcam2 peut effectuer plusieurs opérations sur une seule image. Ainsi, par exemple, le mouvement pourrait être détecté, les statistiques de région pourraient être calculées et plusieurs couleurs pourraient être suivies, le tout sur une seule image.

  • Meilleurs vidages d’image (frame dumps). Comme la CMUcam1 devait synchroniser les données de vidage d’image transmises avec le flux de données du module caméra, elle ne pouvait envoyer qu’une seule colonne de données par image de la caméra. Cela signifiait que différentes parties de l’image étaient capturées à des instants différents, de sorte que les objets se déplaçant rapidement apparaissaient étalés sur les vidages d’image de la CMUcam1. Comme la CMUcam2 transmet l’image à partir des données figées dans la mémoire tampon d’image, ce n’est plus un problème.

  • Meilleure gestion des débits en bauds plus faibles. Disposer d’une mémoire tampon d’image signifie également que le cadencement des données transmises par la CMUcam2 peut être complètement découplé du cadencement des données lues depuis le module caméra. Cela signifie que les données de la CMUcam2 issues des vidages d’image et des modes ligne bitmap ne changent pas lorsque le débit en bauds des communications change ; la CMUcam2 communiquera les mêmes données d’image ou de bitmap au processeur hôte quel que soit le débit en bauds. Cependant, le nombre d’images traitées par seconde peut tout de même changer avec des débits en bauds plus lents, car elle doit malgré tout finir d’envoyer toutes les données d’une image avant de pouvoir traiter les suivantes.

  • Meilleur fonctionnement du module caméra. Pour que le processeur de la CMUcam1 puisse rester synchronisé avec le flux de données du module caméra, la cadence d’images du module caméra devait être ralentie à 17 img/s. La mémoire tampon d’image (frame buffer) utilisée par la CMUcam2 nous permet de faire fonctionner le module caméra à la pleine cadence d’images. Un avantage de ceci est que le réglage automatique de l’exposition et de la balance des blancs de la caméra peut s’effectuer plus rapidement, car il ne peut effectuer qu’un seul réglage par image et il y a désormais davantage d’images par seconde. Le second avantage est que la sortie vidéo analogique en noir et blanc (qui ne fonctionne que lorsque le module fonctionne à la pleine cadence d’images) peut être utilisée pendant que la CMUcam2 traite les données d’image, ce qui n’était pas le cas avec la CMUcam1.

Aperçu des fonctionnalités#

La CMUcam2 implémente toutes les fonctionnalités de la CMUcam1 et ajoute également de nombreuses nouvelles fonctionnalités. Ce qui suit en est un résumé.

  • Suivi de couleur. La CMUcam2 implémente le suivi de couleur exactement comme le faisait la CMUcam1. Comme sur la CMUcam1, un mode ligne bitmap optionnel est implémenté, qui transmet un bitmap des pixels suivis. Il y a également quelques améliorations. Il existe un nouveau mode ligne optionnel qui fournit des statistiques sur les pixels suivis pour chaque rangée, notamment les positions moyenne, minimale et maximale des pixels suivis. Ceci est très utile pour le suivi de ligne. Il existe aussi un nouveau mode optionnel dans lequel l’interprétation des bornes de suivi peut être inversée. Dans ce mode, les pixels situés en dehors des bornes de suivi sont considérés comme « bons ». Ceci est utile pour suivre un objet sur un arrière-plan homogène – pensez aux effets spéciaux sur fond bleu. C’est aussi utile pour détecter les contours lorsque la différenciation de pixels (décrite ci-dessous) est activée. L’option de filtrage du bruit a également été améliorée pour permettre d’ajuster la quantité de filtrage dans les situations bruitées.

  • Statistiques d’image. La CMUcam2 implémente le calcul des statistiques de moyenne et de variation des régions de l’image exactement comme le faisait la CMUcam1. Comme sur la CMUcam1, un mode ligne optionnel est implémenté, qui transmet la moyenne de chaque ligne de l’image. Il existe aussi un nouveau mode ligne amélioré qui inclut optionnellement des informations de variation ligne par ligne.

  • Détection de mouvement. Entièrement nouvelles sur la CMUcam2, il existe des commandes de détection de mouvement (différenciation d’images). Ces commandes peuvent être utilisées pour demander à la CMUam2 de capturer une version basse résolution de l’image actuelle et de la comparer en continu aux nouvelles images entrantes. Les paquets envoyés par la CMUcam2 signalent si une partie quelconque de l’image change de plus d’une quantité spécifiée, ce qui indiquerait potentiellement un mouvement. Ces paquets peuvent décrire le centroïde et l’étendue des blocs d’image ayant changé, ou fournir un bitmap indiquant quels blocs d’image ont changé. Ce mode peut aussi être combiné avec la différenciation de pixels (décrite ci-dessous) pour rendre la détection de mouvement plus robuste aux changements d’éclairage.

  • Histogrammes. Entièrement nouvelles sur la CMUcam2, il existe des commandes de calcul d’histogramme. Ces commandes peuvent être utilisées pour capturer un histogramme unidimensionnel d’un seul canal de couleur à une résolution allant jusqu’à 28 classes (bins). Les histogrammes fournissent des informations utiles qui résument l’apparence d’une image. Avec une programmation supplémentaire sur le processeur hôte, ces informations peuvent servir à aider à la détection d’obstacles, d’objets spécifiques ou de lieux.

  • Fenêtrage d’image. La CMUcam2 implémente la possibilité de restreindre le traitement à une petite région (sous-fenêtre) de l’image complète exactement comme le faisait la CMUcam1. Sur la CMUcam2, cette fonction est encore plus utile, car elle peut servir à examiner de près des sous-fenêtres d’une seule image stockée dans la mémoire tampon d’image. De plus, réduire la taille verticale de la fenêtre peut servir à augmenter considérablement le nombre d’images traitées par seconde en réduisant fortement le nombre de pixels que la CMUcam2 doit traiter.

  • Personnalisation des paquets de sortie. La CMUcam2 implémente une personnalisation des paquets bien plus souple que la CMUcam1. Il existe des commandes qui permettent à l’utilisateur de personnaliser chaque paquet généré par chaque commande afin de ne renvoyer que les valeurs nécessaires à une application particulière. Cela peut réduire considérablement la quantité de données transmises au processeur hôte et traitées par celui-ci dans de nombreuses situations.

  • Différenciation de pixels. Entièrement nouveau sur la CMUcam2, il existe un mode de différenciation de pixels optionnel. En mode de différenciation de pixels, les pixels sont prétraités avant d’être transmis au reste du code de la CMUcam2. Cette étape de prétraitement envoie au reste du code de nouvelles valeurs de pixels qui correspondent à la différence entre la valeur du pixel courant et celle du précédent. En gros, cela filtre tout sauf les contours verticaux de l’image. Il s’agit d’une opération très puissante qui, avec une programmation supplémentaire sur le processeur hôte, peut être utilisée pour aider à la détection d’obstacles et au suivi de ligne.

  • Sous-échantillonnage. Entièrement nouveau sur la CMUcam2, il existe un mode de sous-échantillonnage optionnel. En mode de sous-échantillonnage, le logiciel de la CMUcam2 réduit la résolution de l’image de la caméra avant de la traiter. L’avantage est qu’il y a beaucoup moins de pixels à traiter et à transmettre. Comme cela est réalisé de façon logicielle, le sous-échantillonnage n’entraîne qu’une très faible augmentation de la vitesse de traitement. Le grand avantage réside dans la réduction de la quantité de données transmises. Dans le cas d’un vidage d’image, le sous-échantillonnage peut aisément réduire la taille des données et donc réduire le temps de transmission d’un facteur 2, 4 ou plus. De même, lorsque les modes ligne bitmap sont utilisés, la taille de l’image bitmap peut être considérablement réduite, diminuant la quantité de données qu’un processeur hôte doit recevoir et traiter.

  • Contrôle des servos. La CMUcam1 d’origine ne prenait en charge qu’un seul servo, et ce servo ne fonctionnait correctement qu’à des débits en bauds spécifiques et lorsque la CMUcam1 était en mode streaming. La CMUcam2 prend en charge jusqu’à cinq servos. Le code du contrôleur de servos de la CMUcam2 est implémenté sous forme de processus en arrière-plan, de sorte que les sorties des servos restent toujours stables et qu’il peut être utilisé comme n’importe quel autre contrôleur de servos. De plus, la CMUcam2 peut être configurée pour contrôler automatiquement les servos de panoramique (pan) et d’inclinaison (tilt). Dans ce mode, la CMUcam2 mettra à jour les positions des servos chaque fois qu’on lui demandera de calculer des données de suivi de couleur.

  • Économie d’énergie. Entièrement nouveaux sur la CMUcam2, il existe des modes d’économie d’énergie. Dans certaines applications, la CMUcam2 n’a pas besoin de traiter en continu les données d’image. Dans ces cas, on peut commander à la CMUcam2 d’entrer dans divers modes d’extinction (ou de veille). Aucune commande de suivi ni aucun contrôle de servo n’a lieu lorsque la CMUcam2 se trouve dans l’un de ces modes. L’envoi d’une simple commande série réveille la caméra en quelques millisecondes.

Quelle est la différence entre l’utilisation du module OV6620 et du module OV7620 avec la CMUcam2 ?#

Introduction#

En termes de capacités, le capteur OV7620 est un capteur de résolution supérieure (664x492 emplacements bruts de capteur) au capteur OV6620 (356x292 emplacements bruts de capteur). Mais ce fait a très peu à voir avec les problèmes qui se posent lorsqu’on considère lequel de ces capteurs correspond le mieux à votre application de la CMUcam2. Voici une liste de considérations.

Résolution#

Bien qu’il soit vrai que le capteur OV7620 soit un capteur de plus haute résolution que l’OV6620, en raison de la taille mémoire fixe du tampon d’image de la CMUcam2, la CMUcam2 ne prend en charge qu’une seule résolution de 160x239 pour le capteur OV7620. La CMUcam2 prend en charge un mode basse résolution de 88x143 et un mode haute résolution de 176x255 pour le capteur OV6620. Ainsi, en utilisant l’OV6620 en mode haute résolution, on peut en réalité atteindre un fonctionnement à plus haute résolution que le mode de résolution unique disponible pour le capteur OV7620.

Cadence d’images#

Un autre problème lié à la résolution est la cadence d’images maximale lors du traitement continu d’un flux d’images. Plus la résolution est basse, moins il y a de pixels à traiter et plus la cadence d’images atteignable est élevée. Bien qu’une augmentation de la cadence d’images puisse être obtenue en modifiant le taux de sous-échantillonnage et la taille de la fenêtre virtuelle, le nombre réel de pixels produits par le capteur a un effet bien plus important. Pour cette raison, la CMUcam2 peut atteindre une cadence d’images bien plus élevée lorsque l’OV6620 est utilisé dans son mode basse résolution que dans le mode à résolution unique disponible pour l’OV7620.

Sortie vidéo analogique#

Une autre différence entre les deux capteurs réside dans le format de la sortie vidéo analogique des deux capteurs. Le capteur OV6620 émet au format analogique PAL et le capteur OV7620 émet au format analogique NTSC. Dans les deux cas, la sortie est en noir et blanc.

Il est important de noter que dans la plupart des utilisations de la CMUcam2, la sortie analogique ne sera pas utilisée. Dans une application typique, les résultats du traitement de l’image ou les pixels bruts sont transmis numériquement via le port série à l’ordinateur hôte ou au microcontrôleur, ce n’est donc pas un problème. Cependant, si la vidéo en noir et blanc en direct est importante, vous pourriez vouloir tenir compte du format de la sortie vidéo analogique.

Résumé#

Notre recommandation est que le module OV6620 est le meilleur choix pour presque toutes les applications, surtout compte tenu de son coût inférieur et du temps de traitement plus rapide réalisable avec ce module. Dans les rares applications où une sortie vidéo analogique monochrome NTSC est requise, vous pourriez envisager l’OV7620.

Y a-t-il des problèmes connus avec les versions actuelles du micrologiciel de la CMUcam2 ?#

Oui. Dans la version 1.00, la commande « RM » (Raw Mode) ne fonctionnait pas correctement. La version 1.01 corrige ce problème.

Le micrologiciel de la CMUcam2 est actualisable, mais un programmateur SX-Key (ou compatible) est nécessaire pour ce faire. Les fichiers « hex » des images ROM sont disponibles sur la page Téléchargements.