2012-04-19 2 views
1

J'ai besoin d'aide pour la conception de logiciels. Disons que j'ai une caméra qui obtient des acquisitions, les envoie à un filtre, et affiche les images une à la fois.Accumulateur d'acquisition (conception de logiciel)

Maintenant, ce que je veux, c'est attendre deux images et ensuite envoyer les deux images au filtre et les deux à l'écran.

J'ai pensé à deux options et je me demande lequel choisir: Dans ma classe Acquisitioner (ou autre), devrais-je mettre une file d'attente qui attend deux images avant de les envoyer à la classe Filterer? Devrais-je mettre une classe Accumulator entre le Filterer Acquisitionner &?

Les deux fonctionneraient à la fin, mais lequel pensez-vous que serait mieux?

Merci!

+1

Des images sont-elles constamment acquises (par exemple à un débit fixe)? Avez-vous besoin de répéter ce processus, ou est-ce fait une seule fois? Le traitement du filtre est-il déterministe (en termes de temps)? Y at-il des limites de mémoire? Comment fonctionne le reste du pipeline? Il y a trop de questions ouvertes pour arriver à une seule réponse (correcte). –

Répondre

0

Cela dépend. Mais, si tout ce que fait votre file d'attente attend une seconde image, je pense que vous pourriez simplement l'implémenter dans l'Acquisitioner. D'un autre côté, si vous voulez intégrer toutes les fonctionnalités supplémentaires, la modularité ajoutée et tous les avantages qui en découlent ne nuiraient pas un tout petit peu.

Je ne pense pas que ce soit si important dans ce cas particulier.

1

Pour donner une réponse directe, j'implémenterais la politique Accumulator dans un objet séparé. Voici le pourquoi:

travail sur des modèles similaires dans le passé, je l'ai trouvé très utile de penser à différents « acteurs » dans ce modèle comme sources et éviers. Un source objet serait capable de produire ou de sortir une image à l'objet récepteur attaché. Les filtres ou les accumulateurs de ce système seraient conçus comme des tubes - en d'autres termes, ils implémenteraient les interfaces d'un récepteur et d'une source . Une fois que vous avez créé un mécanisme pour connecter des sources génériques, des tuyaux et des puits, il est très facile d'implémenter une politique d'accumulation comme un tuyau qui, pour chaque image reçue, s'y accrocherait si n est bizarre d'entre eux, si n est pair. Une fois que vous avez ce système, il vous sera facile de changer les sources (lecteurs de fichiers image, décodeurs vidéo, interfaces de capture de caméra), les récepteurs (encodeurs de fichiers image ou vidéo, afficheurs, etc.) et les tuyaux (filtres, accumulateurs, encodeurs, multiplexeurs) sans perturber le reste de votre code.

Questions connexes