FR 2916877 A1 20081205 FR 0703931 A 20070601 Procédé de mise en place d'huîtres dans une bourriche, système et programme d'ordinateur correspondants. 1. Domaine de l'invention Le domaine de l'invention est celui de la préparation de mollusques, et notamment de l'ostréiculture. Plus précisément l'invention concerne la préparation (positionnement et/ou conditionnement dans une bourriche) des huîtres, c'est-à-dire le processus allant de la récolte des huîtres à leur conditionnement. 2. Art antérieur Les huîtres sont des mollusques bivalves que l'on peut répartir en deux catégories : les huîtres plates et les huîtres creuses. Les huîtres creuses possèdent une coquille calcaire formée de deux valves asymétriques secrétées par le manteau : la valve inférieure et la valve supérieure. La valve inférieure est creuse et est fixée au substrat. La valve supérieure constitue le couvercle de l'huître. Depuis toujours, la production des huîtres est un processus essentiellement manuel. Les huîtres, placées dans des poches, sont élevées dans des parcs généralement situés en mer. Dès lors que leur taille est jugée satisfaisante par un ostréiculteur, commence le processus de préparation des huîtres. Le processus de préparation des huîtres débute par leur récolte et s'achève par l'expédition des huîtres conditionnées en bourriches. Ce processus comprend notamment l'ouverture des poches et le lavage des huîtres, le calibrage des huîtres, le tri manuel des huîtres, le conditionnement en bourriches des huîtres et la fermeture des bourriches. Le calibrage consiste à séparer les huîtres suivant leur taille. À l'issue de cette étape, les huîtres sont réparties en plusieurs calibres numérotés de 0 à 5. Plus le numéro du calibre est petit, plus la taille de l'huître est importante. L'étape de calibrage peut être réalisée de manière automatique à l'aide de calibreuses. Le tri des huîtres, ou la sélection des huîtres pour le conditionnement, consiste à séparer les huîtres mauvaises des huîtres bonnes. Une huître bonne est une huître vivante, n' ayant pas une coquille altérée et qui ne perd pas son eau. Une huître mauvaise est une huître morte ou blessée. Une huître blessée est une huître fermée, présentant une altération visible ou non à l'oeil nu, se traduisant par la perte de l'eau intervalvaire de façon naturelle ou forcée. Cette étape de tri des huîtres est réalisée manuellement. Pour cela, un opérateur entrechoque deux huîtres, de manière à déterminer, après analyse du son émis, si l'huître est bonne ou mauvaise. Cette opération demande à celui qui en a la charge un bon niveau d'expertise notamment en ce qui concerne l'analyse du son émis. Le conditionnement des huîtres en bourriches est une étape primordiale pour la bonne conservation des huîtres. En effet, les huîtres doivent être placées de telle sorte que leur valve inférieure soit orientée vers le bas. Les huîtres doivent également êtres régulièrement tassées de manière qu'elles soient bien calées et ne s'ouvrent pas au cours de leur transport et que le colis soit le plus compact possible. Ces précautions permettent aux huîtres de ne pas se vider de leur eau durant leur transport et de subsister jusqu'à ce qu'elles soient consommées. Les opérations de positionnement des huîtres sur leur valve inférieure, ou retournement, de mise en place et de calage des huîtres sont réalisées manuellement par un opérateur. La fermeture des bourriches se fait généralement de manière semi-automatique à l'aide d'une machine de cerclage ou agrafage. Il y a eu de nombreuses tentatives d'automatisation de la préparation des huîtres. Toutes sont restées infructueuses mises à part celles qui concernent le nettoyage des huîtres, leur calibrage et la fermeture des bourriches. L'étape de nettoyage des huîtres qui succède à l'ouverture des poches contenant les huîtres se fait le plus souvent de manière automatique à l'aide de machines dédiées. Le calibrage des huîtres peut également être réalisé au moyen de machines conçues à cet effet. La fermeture des bourriches, demeure dans la plupart des exploitations ostréicoles une étape semi-automatique. En revanche, les tentatives d'automatisation de l'étape de positionnement des huîtres sur leur valve inférieure dans les bourriches sont restées vaines. 3. Inconvénients de l'art antérieur La préparation des huîtres est un travail particulièrement difficile. Elle reste encore essentiellement manuelle et extrêmement pénible et les opérateurs sont soumis au froid, à l'humidité et au respect de cadences élevées. Cette activité demande également un bon niveau d'expertise notamment en ce qui concerne la séparation des huîtres bonnes et des huîtres mauvaises, leur positionnement sur leur valve inférieure et leur conditionnement en bourriche. En effet, le retournement et la mise en bourriche des huîtres font appel à plusieurs sens propres à l'homme comme le toucher, la vue, et également sa capacité d'analyse et ses facultés décisionnelles. Aussi, aucune technique permettant de réaliser ces opérations complexes de façon automatique en se substituant à l'homme n'a été à ce jour développée. La préparation des huîtres est encore difficile du fait que cette activité est saisonnière. Il n'est effectivement pas rare de voir l'effectif d'une société de production d'huîtres plus que doubler en fin d'année, période durant laquelle l'activité est la plus importante. La productivité d'une telle activité est également affectée par le fait qu'elle est essentiellement manuelle. La gestion d'une activité ostréicole et notamment la gestion du personnel d'une telle activité s'avère être d'autant plus compliquée qu'il est difficile de recruter une main d'oeuvre qualifiée. 4. Objectifs de l'invention L'invention a notamment pour objectif de pallier ces inconvénients de l'art antérieur. Plus précisément, un objectif de l'invention est de fournir une technique qui facilite l'automatisation du processus de préparation des huîtres pour le conditionnement. L'invention a aussi pour objectif de faciliter le positionnement des huîtres sur leur valve inférieure et leur conditionnement en bourriche. Un autre objectif de l'invention est de fournir une telle technique qui contribue à rendre plus sûre une telle activité. Encore un objectif de l'invention est de fournir une telle technique qui permette de soulager les opérateurs oeuvrant à la préparation des huîtres. L'invention a pour objectif la proposition d'une telle technique qui soit peu coûteuse et simple à mettre en oeuvre. L'invention a encore pour objectif d'améliorer le rendement et la productivité d'une exploitation ostréicole, et d'en faciliter la gestion notamment en ce qui concerne les variations d'effectif. 5. Exposé de l'invention Ces objectifs, ainsi que d'autres qui apparaîtront par la suite, sont atteints à l'aide d'un procédé de mise en place d'huîtres dans une bourriche comprenant les étapes suivantes : acquisition d'une représentation courante de la surface intérieure de ladite bourriche, comprenant au moins une zone minimum, correspondant à un creux dans ladite surface ; acquisition d'au moins une information représentative d'une huître à placer dans ladite bourriche ; traitement des données correspondant à ladite représentation courante de la surface intérieure de la bourriche et à la ou auxdites informations représentatives de ladite huître, de façon à associer une desdites zones minimum à ladite huître ; mise en place de ladite huître dans ladite bourriche à un emplacement défini par ladite zone minimum associée. Ainsi l'invention repose sur une approche nouvelle et inventive permettant d'assurer, de façon automatique, l'opération de mise en bourriche d'huîtres. Elle consiste notamment à obtenir une représentation du fond d'une bourriche comprenant des emplacements en creux (espaces dans lesquels une huître est susceptible d'être placée) et une information représentative d'une huître à ranger dans la bourriche, puis à traiter ces représentation et information de façon à faire coïncider l'huître avec l'emplacement le mieux adapté dans la bourriche, puis à placer physiquement, par exemple au moyen d'un bras robotisé, l'huître à cet emplacement dans la bourriche. Cette approche, qui selon l'invention est notamment basée sur de l'acquisition et du traitement d'image, permet notamment de conditionner des huîtres sur leur valve inférieure sans qu'un opérateur ne procède à leur retournement. Elle permet donc de soulager les opérateurs oeuvrant à la préparation des huîtres et de rendre cette activité plus sûre. Une telle approche permet donc d'améliorer le rendement d'exploitations ostréicoles. Selon une caractéristique avantageuse de l'invention, ladite étape d'acquisition d'une représentation courante de la surface intérieure de ladite bourriche comprend une obtention d'une image représentative de ladite surface, par combinaison d'au moins deux images délivrées par au moins une caméra. Cette approche peut par exemple permettre de reconstruire de façon simple et efficace une image en deux dimensions du fond d'une bourriche tout en obtenant des informations relatives à son relief. Cette image est préférentiellement en niveaux de gris de façon à faire ressortir le relief du fond de la bourriche. Selon une caractéristique préférée, ladite étape d'acquisition d'une représentation courante de la surface intérieure de ladite bourriche met en oeuvre un ensemble mobile en translation au-dessus de ladite bourriche, portant lesdites caméras et au moins une source laser éclairant ladite surface. Une telle architecture est particulièrement simple, facile à mettre en oeuvre, et permet d'obtenir des résultats précis à moindre coût. On peut également mettre en oeuvre des moyens d'acquisition mobile en rotation. Il est également possible que les moyens d'acquisition soient fixes, et que le support de la bourriche soit mobile. Ainsi, selon une mise en oeuvre de l'invention, ladite étape d'acquisition d'une représentation courante de la surface intérieure de ladite bourriche met en oeuvre des moyens de déplacement de ladite bourriche au regard d'un ensemble portant ladite ou lesdites caméras et au moins une source laser éclairant ladite surface. Une telle architecture permet également l'obtention de résultats précis 10 assez simplement. Avantageusement, ladite image est composée de pixels, une différence des valeurs de ces pixels correspondant à un dénivelé dans ladite surface. Une telle décomposition en pixels peut permettre de détecter de façon simple et précise l'emplacement de points caractéristiques pouvant notamment 15 correspondre aux dénivelés du fond de la bourriche. Préférentiellement, ladite étape d'acquisition d'au moins une information représentative d'une huître comprend une étape d'obtention d'au moins une vue de ladite huître et une étape d'analyse de la ou desdites images. Une (ou plusieurs) caméra(s) et un (ou plusieurs) laser(s) peuvent par 20 exemple être mis en oeuvre afin d'obtenir une image d'une huître, par exemple en niveau de gris, de façon à mettre en évidence son relief. Une telle image peut ensuite être analysée afin d'obtenir une ou plusieurs informations relatives à la géométrie de l'huître, par exemple la position de certains points caractéristiques de l'huître comme ses extrémums. 25 Selon une caractéristique avantageuse, ladite étape d'analyse comprend les sous-étapes suivantes : détermination d'au moins quatre coordonnées de points de surface définissant un parallélogramme représentatif d'une surface englobante de ladite huître ; détermination d'une coordonnée de profondeur, correspondant au point le plus bas de ladite huître. La détermintation de quatre points de surface de l'huître permet de définir la surface occupée par une huître. La détermination d'une coordonnée de profondeur permet de définir la hauteur d'une huître. La connaissance de la surface et de la hauteur d'une huître permet d'en connaître l'encombrement général. Selon une caractéristique préférentielle de l'invention, ladite étape de traitement comprend les sous-étapes suivantes : comparaison de chacune desdites zones minimum avec lesdites coordonnées; sélection de la zone minimum offrant la meilleure coïncidence avec lesdites coordonnées, selon au moins un critère prédéterminé. recherche de la meilleure orientation pour placer l'huître. Chaque huître peut être placée successivement aux différents points les plus bas de la bourriche puis y être pivotée (dans un plan horizontal) afin d'évaluer quel est l'emplacement le plus bas de la bourriche dans lequel s'inscrit le mieux l'huître en fonction de certains critères. Avantageusement, ledit critère prédéterminé dépend d'une information relative à des valeurs de collision entre ladite huître et ladite bourriche. Ainsi, pour chaque position d'une huître à un point bas de la bourriche, l'encastrement et/ou l'espace séparant l'huître de la bourriche, encore appelé enfoncement, sont déterminés. L'emplacement le mieux adapté pour accueillir une huître sera par exemple celui où le niveau d'enfoncement de l'huître dans la bourriche est le plus fort, et où le niveau d'encatrement de l'huître dans la bourriche est le plus faible. Selon une caractéristique avantageuse de l'invention, ladite étape de comparaison est répétée pour au moins deux positions angulaires distinctes de ladite huître. Ceci permet d'affiner la position optimale d'une huître dans la bourriche. Selon une autre caractéristique avantageuse, le procédé selon l'invention comprend une étape de détermination de l'orientation de ladite huître. Cette étape permet de déterminer si l'huître est positionnée sur sa valve inférieure ou sur sa valve supérieure, et ainsi de piloter son retournement si cela est nécessaire de façon que l'huître soit placée sur sa valve inférieure dans la bourriche. Préférentiellement, ladite étape de détermination de l'orientation de ladite huître comprend une étape de détermination du centre de gravité de ladite huître, comprenant les sous étapes suivantes : - acquisition d'au moins une représentation de chacune des valves de ladite huître ; détermination de la position du centre de gravité de chacune desdites valves ; comparaison de la position du centre de gravité de chacune desdites valves. Le centre de gravité d'une huître se situe à l'intérieur de la valve inférieure, c'est-à-dire de la valve creuse. La détermination de la position du centre de gravité d'une huître peut donc permettre d'en déterminer l'orientation. En outre, la position du centre de gravité d'une huître peut être déduite de la position du centre de gravité de chaque valve d'une huître. Ainsi, après avoir obtenu une représentation de la valve supérieure d'une huître posée sur sa valve inférieure, et de la valve inférieure de l'huître posée sur sa valve supérieure, par exemple sous la forme d'une image en niveau de gris, une analyse de ces images peut permettre de déterminer la position du centre de gravité de chaque valve, et en particulier son altitude. Une comparaison de l'altitude de ces centres de gravité permet ensuite de déterminer l'orientation de l'huître. En effet, le centre de gravité dont l'altitude est la plus faible est le centre de gravité de la valve inférieure. L'image pour laquelle l'altitude du centre de gravité est la plus importante est donc l'image de l'huître placée sur sa valve inférieure. L'invention concerne également un système de mise en place d'huître dans une bourriche qui comprend des moyens : d'acquisition d'une représentation courante de la surface intérieure de ladite bourriche, comprenant au moins une zone minimum, correspondant à un creux dans ladite surface ; d'acquisition d'au moins une information représentative d'une huître à placer dans ladite bourriche ; de traitement des données correspondant à ladite représentation courante de la surface intérieure de la bourriche et à la ou auxdites informations représentatives de ladite huître, de façon à associer une desdites zones minimum à ladite huître ; de mise en place de ladite huître dans ladite bourriche à un emplacement défini par ladite zone minimum associée. Avantageusement, le système selon l'invention comprend des moyens : d'acquisition d'au moins une représentation de chacune des valves de ladite huître ; de détermination de la position du centre de gravité de chacune desdites valves ; de comparaison de la position du centre de gravité de chacune desdites valves. L'invention porte également sur un produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur qui comprend des instructions de code de programme pour la mise en oeuvre des étapes du procédé de mise en place d'huîtres à l'intérieur d'une bourriche selon le procédé décrit ci-dessus. 6. Liste des figures D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : la figure 1 illustre la physionomie générale d'une huître ; la figure 2 est un schéma simplifié représentant les principales étapes d'un exemple de procédé de mise en place d'huîtres dans une bourriche selon l'invention ; la figure 3 est un schéma plus détaillé illustrant différentes étapes du procédé illustré à la figure 2 ; la figure 4 illustre un exemple de dispositif mis en oeuvre selon l'invention de façon à obtenir des vues représentatives de la surface intérieure d'une bourriche ; la figure 5 est une illustration d'une vue en niveaux de gris d'une huître ; la figure 6 illustre une représentation des différentes étapes pouvant, à titre de variante, être incluses dans un procédé selon l'invention de façon à déterminer la position du centre de gravité d'une huître, et en déduire son orientation. 7. Description d'un mode de réalisation de l'invention 7.1 Rappel du principe de l'invention L'invention présente donc une technique permettant de conditionner des huîtres, par exemple en bourriche, sans qu'un opérateur n'ai à accomplir, manuellement, les opérations de retournement des huîtres (positionnement sur leur valve inférieure) et de positionnement et calage des huîtres dans une bourriche. L'invention permet donc de faciliter la mise en place d'huîtres en bourriche, étape de la préparation des huîtres qui n'a jamais été automatisée. Cette technique repose notamment sur l'acquisition d'une représentation d'une surface intérieure d'une bourriche et sur l'acquisition d'une information représentative d'une huître, puis sur l'analyse et le traitement de ces informations de façon à placer l'huître dans la bourriche de façon optimale. Cette technique peut avantageusement être basée sur l'acquisition et le traitement d'images représentatives d'une bourriche et d'une huître. Le traitement effectué permet par exemple de piloter un bras robot, capable notamment de saisir, de manipuler et de déposer une huître. 7.2 Physionomie d'une huître La figure 1 illustre deux vues simplifiées d'une huître. Leur description permet de mieux appréhender la physionomie d'une huître telle qu'elle a été présentée dans l'état de l'art. La coquille d'une huître se compose de deux parties : la valve inférieure 11 et la valve supérieure 12. La région la plus étroite des valves inférieures et supérieures constitue le talon 13. La partie la plus large des valves inférieures et supérieures constitue la pointe 14. Un axe R passant par la pointe et le talon d'une huître est ici représenté par des traits mixtes. 7.3 Description d'un procédé selon l'invention 7.3.1 Etapes principales La figure 2 est une représentation synoptique d'un procédé de mise en place d'huître à l'intérieur d'une bourriche selon l'invention. Un tel procédé comprend au moins quatre étapes principales numérotées 21, 22, 23, 24. L'étape d'acquisition d'une bourriche 21 est une étape d'acquisition d'une représentation courante de la surface intérieure d'une bourriche comprenant au moins une zone minimum. L'étape d'acquisition d'une huître 22 est une étape d'acquisition d'au moins une information représentative d'une huître à placer dans la bourriche. L'étape de traitement 23 consiste à traiter les données issues des étapes d'acquisition d'une bourriche 21 et d'acquisition d'une huître 22 de façon à associer une zone minimum de la bourriche à l'huître de façon optimale. Enfin, l'étape de mise en place 24 consiste à placer l'huître dans la bourriche avec la bonne orientation. 7.3.2 Acquisition d'une représentation de la bourriche L'étape d'acquisition d'une bourriche 21 est une étape d'acquisition d'une représentation courante de la surface intérieure d'une bourriche, comprenant au moins une zone minimum, correspondant à un creux dans la bourriche. Dans cette étape, on va donc obtenir une représentation du fond intérieur d'une bourriche et déterminer la position des creux présents dans le fond de cette bourriche. Ces creux constituent des emplacements potentiels où placer une huître dans la bourriche. 7.3.2.1 Obtention d'une image de la bourriche Tel que cela apparaît sur la figure 3, l'étape d'acquisition d'une bourriche 21 peut avantageusement comprendre une étape 211 d'obtention d'une image représentative de la surface intérieure (ou fond) de la bourriche. L'image représentative du fond de la bourriche peut par exemple être obtenue par combinaison d'au moins deux images délivrées par au moins une caméra. À cet effet, et tel que cela est représenté sur la figure 4, un ensemble mobile représenté ici sous la forme d'un portique 41, peut supporter deux caméras 42, 43 de façon à ce qu'elles soient déplacées au dessus de la bourriche 44. Préférentiellement, un laser 45, également solidaire du portique 41, balaye la surface de la bourriche 44, de façon que les caméras 42, 43 enregistrent, au passage du laser 45, une succession d'images correspondant aux dénivelés de la bourriche 44. Ce dispositif permet la reconstitution, à partir des informations acquises par les caméras 42, 43, d'une image de la surface intérieure de la bourriche 44. Cette reconstitution d'image peut par exemple être réalisée au moyen d'un logiciel dédié. Dans une variante, une image représentative de la bourriche pourra être obtenue par la mise en oeuvre d'un laser et d'une unique caméra. Dans une autre variante, la ou les caméras pourront être fixes, et la bourriche étant alors déplacée en regard de celles-ci. L'image standard est de forme rectangulaire, et est obtenue par une triangulation laser (analyse du profil de la bourriche grâce à un laser associé à une caméra). La projection d'un plan laser sur la bourriche permet à la vision d'en déduire sa hauteur z. L'intérieur de la bourriche étant balayé par un plan laser, la vision reconstitue son volume et transmet ses coordonnées dans l'espace. L'image obtenue est composée de pixels dont une différence de valeur correspond à un dénivelé dans la bourriche. Préférentiellement l'image obtenue est une image en niveaux de gris. Sur cette représentation en niveaux de gris, une différence de niveaux de gris correspond à un dénivelé dans la surface intérieure de la bourriche 44. Cette approche permet donc de détecter efficacement et simplement les différences de niveaux de la surface interne de la bourriche 44, et en particulier de noter la présence de différents points creux (ou zones minimum) dans le fond de la bourriche. À l'issue de l'étape d'obtention d'une image du fond de la bourriche 211, on dispose donc d'une image en niveaux de gris du fond de la bourriche. De façon avantageuse, les images traitées au cours du procédé selon l'invention sont notamment mémorisées sous forme cle matrices. Ceci facilite les différentes opérations de traitement. 7.3.2.2 Détermination de points minimums de la bourriche Dans ce mode de réalisation particulier, l'étape d'obtention d'une image du fond de la bourriche 211 est suivie d'une étape de détermination de minimums de la bourriche 212, qui consiste en une analyse de l'image représentative de la surface interne de la bourriche 44. Cette étape de détermination de minimums de la bourriche 212 permet d'obtenir les coordonnées de points, cinq par exemple, correspondant aux lieux les plus profonds de la bourriche. Comme indiqué précédemment, une telle étape d'analyse d'image peut par exemple consister, à tout le moins en partie, en une analyse d'une matrice représentative de l'image du fond de la bourriche. Une telle opération peut par exemple être réalisée en exécutant le code figurant à l'annexe Al (on note que l'ensemble des codes figurant dans les annexes sont prévus pour être éxécutés à l'aide du logiciel Matlab ). À l'issue de cette étape de détermination de points minimums de la bourriche 212, on connaît les coordonnées des cinq (par exemple) points les plus creux du fond de la bourriche. Comme il a été expliqué plus haut, ces points sont des emplacements potentiels où placer l'huître dans la bourriche. 7.3.2.3 Traitements complémentaires L'étape d'analyse de l'image représentative de la bourriche peut, bien entendu, être précédée d'une étape de traitement d'image préalable de façon à faciliter son analyse. Cette étape de traitement d'image peut notamment comprendre différentes opérations telles qu'un décalage, un centrage, un lissage, une inversion, et/ou l'élimination d'un cadre entourant l'image. Ces différentes étapes peuvent notamment être obtenues par un ou plusieurs filtrages de l'image. Toutes ces opérations diverses, connues en elles-mêmes dans le domaine du traitement des images, peuvent notamment correspondre à la manipulation de matrices. 7.3.3 Acquisition d'une représentation de l'huître L'étape d'acquisition d'une huître 22 est une étape d'acquisition d'au moins une information représentative d'une huître à placer dans la bourriche. 7.3.3.1 Obtention d'au moins une vue d'une huître Avantageusement, cette étape d'acquisition d'une huître 22 comprend une étape 221 d'obtention d'au moins une vue représentative d'au moins une huître à placer dans la bourriche. La méthode de prise de vues des huîtres peut être similaire à celle permettant l'obtention d'une image de la bourriche. Elle peut donc mettre en oeuvre un laser qui balaye la surface des huîtres et qui déclenche l'enregistrement d'une succession d'images par au moins une caméra de façon à reconstituer une image de l'huître, par exemple en niveaux de gris. À l'issue de cette étape d'obtention d'au moins une vue de l'huître 221, on a une image en niveaux de gris de l'huître à placer dans la bourriche. De la même façon que pour l'image représentative du fond de la bourriche, l'image représentative de l'huître peut subir divers traitements, notamment de façon à en faciliter l'exploitation. 7.3.3.2 Analyse des vues de l'huître L'étape d'acquisition d'une huître 22 comprend également une étape 222 d'extraction d'informations de la vue représentative de l'huître obtenue dans l'étape d'obtention d'au moins une vue de l'huître 221. A/ Détermination de la surface de l'huître Cette étape 222 d'extraction d'informations comprend notamment une étape de détermination de la surface de l'huître 2221 qui consiste à déterminer au moins quatre coordonnées de points de surface définissant un parallélogramme représentatif de la surface principale de chaque huître. Telle que cela apparaît plus clairement sur la figure 5, qui illustre une représentation d'une image en niveau de gris d'une huître 51, cette étape de détermination de la surfacede l'huître 2221 permet de définir les coordonnées du point le plus haut 52, du point le plus bas 53, du point le plus à gauche 54 et du point le plus à droite 55 de l'huître 51. Ces différents points 52, 53, 54, 55 permettent de définir l'encombrement maximum (en deux dimensions) de l'huître 51. Comme indiqué ci-dessus, on cherche à déterminer quatre points représentatifs de l'huître, à savoir les points les : plus haut, plus bas, plus à gauche, plus à droite. La détermination de ces points se fait notamment par caclul matriciel à partir des matrices correspondant aux images des huîtres. Pour obtenir les points le plus à gauche et plus à droite, dans un premier temps, les valeurs contenues dans chaque colonne de la matrice qui représente l'huître sont sommées. La somme des colonnes (somme_colonnes) est obtenue par la somme sur chaque colonne des valeurs de la matrice huitre (fonction `surn' de Matlab ). Ensuite, les indices des colonnes pour lesquels la somme est différente du nombre de lignes multiplié par 255 (code couleur d'un pixel blanc) sont recherchés. Cela permet d'éliminer les colonnes contenant uniquement des pixels blancs (l'huitre est ainsi extraite de l'image). Puis, les valeurs minimums et maximums parmi les indices précédemment calculés sont recherchées : le point le plus à gauche est l'indice minimum et le point le plus à droite est le plus grand indice. On effectue un traitement analogue pour obtenir les points le plus haut et le plus bas de l'huître. La somme des lignes (somme_lignes) est obtenue par la somme sur chaque ligne des valeurs de la matrice huitre (fonction `sum' de Matlab ). On recherche les indices des lignes pour lesquels la somme est différente du nombre de colonnes multiplié par 255 (code couleur d'un pixel blanc). Ceci permet d'éliminer les lignes contenant uniquement des pixels blancs (ceci permet d'extraire 1'huitre de l'image). On recherche ensuite les valeurs minimums et maximums parmi les indices précédemment calculés : la "valeur sup"(point le plus haut) est l'indice minimum, la "valeur inf' (point le plus bas) est le plus grand indice. Une telle étape de détermination de la surface de l'huître 2221 peut par exemple être réalisée en exécutant le code figurant à l'annexe A2. B/ Détermination de la profondeur de l'huître L'étape 222 d'extraction d'informations comprend en outre une étape de détermination de lia profondeur le l'huître 2222 qui consiste à déterminer les coordonnées de profondeur, correspondant au point le plus creux de chaque huître. La connaissance du point le plus creux de l'huître ainsi que des quatre points de surface permet d'évaluer l'encombrement maximum de l'huître en trois dimensions, ou à tout le moins de connaître les extremums de l'huître, c'est-à-dire les points les plus caractéristiques d'une huître ayant une incidence lors de sa mise en place dans une bourriche. Il est alors possible de construire une représentation virtuelle simplifiée de l'encombrement général d'une huître. Une telle étape de détermination de la profondeur de l'huître 2222 peut par exemple être réalisée en exécutant le code figurant à l'annexe A3. 7.3.4 Détermination de l'angle d'orientation de l'huître Ce mode de réalisation particulier du procédé selon l'invention, comprend également une étape permettant de définir l'angle d'orientation optimal que présente l'huître en ses points minimums. Plus précisément, cette étape consiste à définir le vecteur caractéristique de chaque point minimum de l'huître par ses coordonnées et son angle. Ce vecteur est défini à partir des matrices, en coordonnées polaires, des images de la bourriche et de l'huître Dans un premier temps, on ne tient pas compte de la forme de l'huître à poser et on effectue une première détermination de l'angle. Une telle étape peut par exemple être réalisée en exécutant le code figurant à l'annexe A4. Dans un deuxième temps, on affine la valeur de l'angle déterminé dans la fonction ci-dessus ( angle par moyenne ) en utilisant une double transformée de Fourrier. Une telle étape peut par exemple être réalisée en exécutant le code figurant à l' annexe A5. 7.3.5 Traitement des données et association d'une zone minimum de la bourriche à une huître L'étape 23 de traitement consiste à traiter les données correspondant à la représentation courante de la surface intérieure de la bourriche issues de l'étape d'acquisition d'une bourriche 21 et la ou les informations représentatives de l'huître issues de l'étape d'acquisition d'une huître 22, de façon à associer une des zones minimum de la bourriche à l'huître. Dans ce mode de réalisation particulier, cette étape 23 de traitement 20 consiste donc à traiter les images en niveaux de gris respectivement représentatives du fond de la bourriche et de l'huître. 7.3.5.1 Comparaison des zones minimum de la bourriche avec la géométrie de l'huître Cette étape de traitement 23 comprend notamment une étape 231 de 25 comparaison de chacun des points minimums du fond de la bourriche avec les points représentatiifs de la géométrie de l'huître obtenus dans les étapes de détermination de la surface de l'huître 2221 et de détermination de la profondeur de l'huître 2222. A/ Balayage de la bourriche Plus précisément, dans ce mode de réalisation particulier, cette étape de comparaison 231 intègre une étape de balayage de la bourriche. Dans cette étape de balayage, l'huître est virtuellement placée aux différents points les plus bas de la bourriche déterminés précédemment, selon différents angles et de façon successive. Une telle étape de balayage peut par exemple être réalisée en exécutant le code figurant à l'annexe A6. B/ Détermination des espaces et des encastrements entre l'huître et la bourriche Chacune des positions prises par l'huître au cours de l'étape de balayage est ensuite soumise à des tests dont les résultats permettront de définir la position optimale. Cette opération de tests est l'objet de l'étape 232 de sélection de la zone minimum offrant la meilleure coïncidence avec les coordonnées selon un critère prédéterminé. Ce critère peut par exemple dépendre de l'espace séparant l'huître et le fond de la bourriche et/ou de la valeur de collision entre l'huître et le fond de la bourriche en une multitude de points, lorsque l'huître est virtuellement placée dans la bourriche. Dans ce mode de réalisation particulier, on enregistre, pour chaque position de l'huître dans la bourriche, les différences de niveau entre l'huître et la bourriche. Ceci permet de définir les espaces qui peuvent exister entre la bourriche et l'huître et les encastrements de l'huître dans la bourriche. On peut ainsi définir, pour chaque position de l'huître, la valeur des encastrements de l'huître dans la bourriche et des espaces séparant la bourriche et l'huître en chacun de ces points. Ces différentes valeurs d'espace ou d'encastrement sont ensuite analysées. Une telle étape de tests peut par exemple être réalisée en exécutant le code figurant à l'annexe A7. C/ Choix de l'emplacement optimal de l'huître dans la bourriche Pour chaque position de l'huître, on définit un encastrement maximum, un espace maximum, une différence entre l'encastrement et l'espace maximum, la moyenne des encastrements, ainsi que la proportion de points où se produit un encastrement. Ces valeurs permettent de définir la position la plus appropriée pour placer l'huître dans la bourriche. Dans ce mode de réalisation particulier, la position sélectionnée est celle dans laquelle les valeurs des encastrements de l'huître dans la bourriche et de la moyenne de ces encastrements sont les plus faibles. À l'issue de cette étape 232 de détermination de l'emplacement optimal de l'huître, on connaît donc l'emplacement optimal où doit être mise en place l'huître au fond de la bourriche. Une telle étape 232 de détermination de l'emplacement optimal peut par exemple être réalisée en exécutant le code figurant à l'annexe A8. 7.3.6 Mise en place d'une huître dans la bourriche Le procédé selon l'invention comprend également une étape 24 de mise en place de l'huître dans la bourriche à un emplacement défini par la zone minimum associée. On peut dans un premier temps effectuer un remplissage virtuel de la bourriche. Selon une variante de l'invention, on affiche, par exemple sur un écran de contrôle, une représentation de la bourriche dans laquelle on a virtuellement placé une huître. Ceci peut être fait en exécutant par exemple le code figurant à l'annexe A9. Cette étape de mise en place 24 permet en outre de placer physiquement, et non plus virtuellement, l'huître dans la bourriche au niveau de la zone minimum optimale retenue à l'issue de l'étape de détermination de l'emplacement optimal 232. L'huître peut avantageusement être mise en place dans la bourriche au moyen d'un bras robotisé qui permet de la saisir et de lui faire subir toutes les rotations nécessaires à sa mise en place dans la bourriche de façon satisfaisante. Le bras robotisé peut être avantageusement piloté au moyen d'un système informatique capable d'exécuter un programme d'ordinateur permettant d'enchaîner les différentes étapes du procédé de mise en place d'huîtres dans une bourriche selon l'invention. De façon préférentielle, le bras robotisé peut venir saisir les huîtres qui auront été préalablement positionnées sur un convoyeur, leur valve inférieure orientée vers le bas. Ainsi, dans ce cas, l'huître ne doit pas être réorientée, c'est-à-dire placée sa valve inférieure orientée vers le bas avant d'être placée dans la bourriche. Après que l'huître a été mise en place dans la bourriche, le procédé est réitéré depuis l'étape d'acquisition d'une huître 21. C'est alors une représentation courante de la surface intérieure de la bourriche contenant l'huître précédemment mise en place qui est acquise. Le procédé est réitéré autant de fois qu'il y a d'huîtres à placer dans la bourriche. 7.3.7 Option : détermination de l'orientation de l'huître Dans le mode de réalisation décrit plus haut, les huîtres à placer dans la bourriche sont correctement orientées, c'est-à-dire que leur valve inférieure est dirigée vers le bas. Il n'est donc pas nécessaire d'effectuer l'opération de retournement avant leur mise en place dans la bourriche. Il peut cependant arriver que la valve inférieure des huîtres ne repose pas sur le convoyeur. Dans ce cas, il faut nécessairement effectuer une opération de retournement avant de placer l'huître dans la bourriche. Une option de l'invention permet d' automatiser le retournement des huîtres. Selon cette option, le procédé selon l'invention peut permettre de définir l'orientation d'une huître. Selon l'invention, l'orientation de l'huître est déduite de la position du centre de gravité de chacune de ses valves. En effet, le centre de gravité d'une huître se situe au niveau de sa valve inférieure qui contient la chair de l'huître. Tel qu'il apparaît sur la figure 6, le procédé selon l'invention peut 30 comprendre, de façon à définir l'orientation de l'huître, une étape 61 d'obtention d'une image représentative d'une première face de l'huître. Cette étape peut être suivie d'une étape 62 de traitement de l'image obtenue dans l'étape d'obtention d'une image d'une première face d'une huître 61, puis d'une étape 63 de détermination des coordonnées du centre de gravité de la première face de l'huître. Ce procédé peut en outre comprendre une étape 64 d'obtention d'une image d'une deuxième face de l'huître, suivi d'une étape 65 de traitement de l'image issue de l'étape d'obtention d'une image d'une deuxième face de l'huître 64, et enfin une étape 66 de détermination des coordonnées du centre de gravité de la deuxième face de l'huître. Les positions des deux centres de gravité sont ensuite comparées dans une étape 67. En particulier, on peut comparer les coordonnées des deux centres de gravité. Cette comparaison permet de définir, dans une étape 68, la face sur 15 laquelle se trouve le centre de gravité de l'huître. Cette face correspond à la valve inférieure. On défini ensuite dans une étape 69, la position du centre de gravité de l'huître. Le fait de connaître la position du centre de gravité de l'huître, et par 20 extension l'orientation de l'huître, permet de poser l'huître sur sa valve inférieure dans la bourriche. Les étapes décrites plus haut peuvent par exemple être réalisées en exécutant le code figurant à l'annexe A10. Le procédé selon l'invention permet d'automatiser la mise en place 25 d'huîtres dans une bourriche et, le cas échéant, d'automatiser leur retournement. L'invention permet ainsi de limiter les opérations manuelles, souvent pénibles pour les opérateurs qui en ont la charge, conduisant au conditionnement des huîtres en bourriches. L'approche selon l'invention permet d'augmenter la productivité des 30 exploitations ostréicoles, notamment en ce qu'elle permet d'augmenter les cadences de préparation des huîtres. Elle permet également d'améliorer la sécurité de telles exploitations du fait qu'elle facilite le travail des opérateurs. Elle permet en outre de faciliter la gestion de telles exploitations, notamment sur le plan des ressources humaines et de la gestion du personnel, dans le contexte d'une activité essentiellement saisonnière et dans laquelle il s'avère être particulièrement difficile de recruter du personnel qualifié. ANNEXES Annexe Al function mat mini = recherche mini(matrice,nbres minimum, rayon_zone_profonde,nbre_lign 5 es, nbre colonnes) % DESCRIPTION % Recherche de minimum dans la bourriche. % % ENTREES 10 % matrice -> Matrice de la bourriche. % nbres minimum -> Nombre de minimums recherchés % rayon _ zone_ profonde -> Distance entre 2 minimums en pixel. % nbre_lignes -> Nombre de lignes de la matrice bourriche (int). 15 % nbre_colonnes -> Nombre de colonnes de la matrice bourriche (int). % % SORTIE % mat mini -> matrice contenant les minimums : mat_mini = [valeur 20 du minimum ; n ligne ; n colonne]. % % initialisations ligne mini_temp = 0; colonne mini temp = 0; 25 % matrice temporaire uniquement utilisée pour travailler sur la détection des minimums matrice temp = double(matrice); colonne mini precedent = 0; ligne miniprecedent = 0; % recherche des minimums, on va mémoriser les 5 points les plus profonds for (k=1:1:nbres minimum) % recherche du minimum et de sa position dans la matrice 5 [mat mini col, indice_ligne_mini] = minmatrice_temp); [mini absolu, colonne_mini] = min(mat_m__ni_col); ligne_mini = indice_ligne_mini(colonne_mini); % on extrait 3 valeurs : mini absolu, l_Lgne_mini, colonne_mini [nbre_lignestemp,nbre_colonnes_temp]=s:Lze(matrice_temp); 10 % enregistrement du point dans la matrice de sauvegarde mat_mini mat mini(k,l) = mini absolu; mat mini(k,2) = ligne_mini; mat mini(k,3) = colonne_mini; 15 if ((ligne_mini-rayon_ zone_ profonde>0)&&(colonne mini- rayon_ zone_ profonde>0)&&(ligne_mini+rayon_zone_profonde Matrice de type uint8 de l'huître. % % nb lignes -> Nombre de lignes de la matrice huitre (int). % % nb colonnes -:> Nombre de colonnes de la matrice huitre (int). % % SORTIE % struct image -> Structure d'entiers contenant : % hauteur : Niveau de gris du point le plus bas de l'objet dans l'image. % abscisse : Abscisse du minimum de l'image. % ordonnee : Ordonnée du minimum de l'image. % orientation : Orientation de l'objet dans l'image. % deposer : Boolean vaut 1 si l'huître est déposée 0 sinon. % valeur_sup : Point le plus haut de l'objet dans l'image (int). % valeur inf : Point le plus bas de l'objet dans l'image (int). % valeur gauche : Point le plus à gauche l'objet dans l'image (int). % valeur droite : Point le plus à droite l'objet dans l'image (int). % Constantes CODE COULEUR PIXEL BLANC=255; %initialisation struct image=struct('hauteur',0,... 'abscisse',0,... 'ordonnee',0,... 'orientation',O,... 'deposer',0,,... 'valeur sup',0 ,.. 'valeur inf',0 ,... 'valeur gauche',O,... 'valeur droite',0 ); % on calcul la somme des colonnes somme colonnes ,=sum(matrice,l); % on cherche les sommes diff de 0 indices colonnes = find(somme colonnes =nb lignes*CODE COULEUR PIXEL BLANC); %on cherche le min et max pour les valeurs gauche et droite struct image.valeur gauche = min(indices colonnes); struct image.valeur droite = max(indices colonnes); %de meme pour les lignes somme lignes = sum(matrice,2); indices lignes = find(somme lignes -=nb colonnes*CODE COULEUR PIXEL BLANC); struct image.valeur sup = min(indices lignes); struct_image.valeurinf = max(indices_lignes); Annexe A3 function [ligne mini huitre, colonne mini huitre] = initialisation(mat huitre,nbre lignes,nbre colonnes ) % % DESCRIPTION % Retourne la ligne et la colonne du centre de la zone minimum de l'huître. % % ENTREES % mat huitre -> Matrice de type uint8 de l'huître. % % nbre lignes -> Nombre de lignes de la matrice huitre (int). % nbre colonnes -> Nombre de colonnes de la matrice huitre (int). % % SORTIE % ligne_ mini_hu:itre -> Coordonnée en X du minimum de l'huître (int). % % colonne mini huitre -> Coordonnée en Y du minimum de l'huître (int). % % initialisation j=o; k=0; p=0; i=o; [nbre_lignes,nbre_colonnes]=size(mat_huitrel; % recherche du minimum et de sa position dans la matrice pour les colonnes. [mat mini col hui, indice ligne mini hui] = min(mat huitre); [mini _ absolu_ hui, colonne _ mini_ hui] = min(mat_minicol_hui); for k = l:nbre colonnes if (mat mini col hui(l,k) mini absolu_ hui) j=j+1; end end colonne mini huitre = colonne mini hui + ro.ind(j/2); 30 % Transposition pour faire de meme avec les lignes mat_huitre_transpo = (mat_huitre)'; % Recherche du minimum et de sa position dans la matrice pour les lignes. [mat minicolindice ligne minihui1] = min(mat huitre transpo); [mini_absoluligne_mini_hui] = min(mat_mini_col_hui_1); for i = l:nbre lignes if (mat mini col hui 1(l,i) mini_absolu_hui_l) p=p+1; end end ligne_minihuitre = ligne_mini_hui + round(p/2); return Annexe A4 % Détermination de l'angle d'orientation de l'huître. function [angle orientation, mat polaire_ bourriche_recalee] = angle_par_moyenne(mat_polaire_bourriche, rayon_polaire) % % DESCRIPTION % Cette fonction determine l'angle d'orientation de l'huître sans tenir compte de sa forme.Une première détermination de l'angle est effectuée, elle sera affinée ensuite par l'intercorrélation. % % ENTREES % mat polaire bourriche -> Matrice de type uint8 de la bourriche en coordonnées polaires. % % rayon_ polaire_huitre -> Nombre de lignes des matrices polaires (int). % % SORTIE % angle orientation -> Angle d'orientation de l'huitre (int). % % mat polaire bourriche recalee -> Matrice en coordonnées polaires décalée en plaçant le minimum de la hauteur à 180 . % % % Passage en matrice double pour calculs arithmétiques. mat polaire bourriche = double(mat polaire bourriche); % Décalage en angle de la matrice de la bourriche en coordonnées polaires en plaçant le minimum de la hauteur à 180 . [mat polaire bourriche recalee,angle orientation] = recalage (mat polaire bourriche, rayon polaire); return function [mat recalee,angle orientation] = recalage (matrice, rayon) angle optimum=180; angle oppose=180; matrice= double(matrice); %pondération pour les valeurs les plus proches du centre for Teta = 1 : 360 for R = 1 : rayon mat ponderee(R,Teta) = matrice(R,Teta)*(-R+rayon); end end mat_ponderee = uint8(mat ponderee); % calcul de la somme des hauteurs par colonne Tableau sommes = sum(mat_ponderee); % determination des minimums [SommeMin,angle]=min(Tableau sommes); %angle oppose if (angle > 180) angle_oppose = angle - 180; end if (angle angle optimum) if (colonne+angle orientation 360) mat recalee(ligne, colonne- angle optimum) = matrice(ligne, colonne-(360-angle_orientation)); else mat recalee(ligne, colonne- angle optimum) matrice(ligne, colonne+angle_ orientation); end end end 20 end end %fin du recalage de la matrice end Annexe A5 25 function angle_orientation affinne = angle _par_ intercorrelation(mat_polaire_bourriche, mat polaire _huitre,angle_orientation, rayon polaire, angle_polaire_t eta max) % 30 % DESCRIPTION 10 15 % Fonction qui affine la précision de l'angle d'orientation de l'huître déterminé au préalable par la fonction angle par moyenne . % Cet angle est déterminé par une double transformée de Fourrier effectuée dans =La fonction intercorrélation . % % ENTREES % mat _ polaire_ bourriche -> Matrice de type uint8 de la bourriche en coordonnées polaires. % % mat polaire huitre -> Matrice de type uint8 de l'huître en coordonnées polaires. % % angle orientation -> angle d'orientation de l'huitre (int). % % rayon polaire huître -> Nombre de lignes des matrices polaires (int). % % angle polaire teta max -> Nombre de colonnes des matrices polaires (int). % % SORTIE % angle orientation affinne -> angle d'orientation de l'huitre apres affinage(int). % % Passage en matrice double (format des données de la matrice) pour permettre les calculs arithmétiques (fftG:>Transformée de Fourrier). mat_polaire_bourriche_double = double(mat_polaire_bourriche); mat polaire huitre double = double(mat polaire huitre); % Analyse par FFT pour déterminer le meilleur calage entre les 2 matrices mat produit fft inverse = intercorrelation(mat polaire bourriche double, mat polaire huitre double,rayon polaire,angle polaire teta max); % Recherche du maximum et de sa position dans la matrice. [mat maxi col, :indice ligne_maxi] = max (mat produit fft inverse); [maxi absolu, colonne maxi] = max(mat maxi col); ligne_maxi = indice ligne maxi(colonne maxi); vect_mini_optimum = [ligne_maxi colonne_maxi]; % [Rayon et Angle] % Recalage de la bourriche en fonction du résultat de la fft valeur recalage = modulo (vect mini optimum(1,2),360); angle orientation affinne=modulo(angle orientation - valeur recalage,360); return Annexe A6 % Balayage des positions possibles de l'huître autour d'un minimum de la bourriche. function [ struct huitre, mat huitre deposer,vect critere depot huitre,vect caracteristique minimum bourriche]= balayage (mat huitre,vect caracteristique minimum bourriche,mat bou rriche, moyenne niveaux gris bourriche,teta,nb lignes bourriche,nb colonne s _bourriche) % % DESCRIPTION % Cette fonction effectue le balayage des différentes positions obtenues par rotation autour de la position choisie pour déposer l'huître. Cette position correspond à un minimum de la bourriche. % ENTREES % mat huitre -> Matrice de l'huître (240*240) au format unsigned integer de 8 bits. % % vect caracter:Lstique_minimum_bourriche -> Vecteur contenant les caractéristiques du minimum de la bourriche. % Vecteur= [ Z,, X, Y, angle orientation ] % Z => niveau de gris du minimum de la bourriche (int). % X => coordonnées en X du minimum de la bourriche (int). % Y => coordonnées en Y du minimum de la bourriche (int). % angle orientation => angle d'orientation du minimum de la bourriche (int). % % mat bourriche -> Matrice de la bourriche (500*500) au format unsigned integer de 8 bits. % % moyenne_niveaux_gris_bourriche -> Moyenne des niveaux de gris de la bourriche. % % teta -> Pas de balayage autour du minimum. % % nb lignes bourriche -> Nombre de lignes de la matrice bourriche (int). % % nb colonnes bourriche -> Nombre de colonnes de la matrice bourriche (int). % vect critere depot huître -> Tableau de valeurs numériques contenant les statistiques d'un minimum : % deposer => Indicateur d'acceptation de l'emplacement (si plouf = 1, le lieu est retenu). % max absolu => Valeurs des pics maximales. % min absolu => Valeurs des pics minimales. % max_min => Différence entre les deux pics. % moyenne_sup_zero => Niveau moyen des points positifs de la matrice des différences. % pourcentage_sup_zero => Pourcentage de points positifs. % % vect caracteristiqueminimum_bourriche -> Tableau de valeurs numériques contenant les caractéristiques d'un minimum : % Vecteur = [ Z, X, Y, angle orientation :I % Z => niveau de gris du minimum de la bourriche (int). % X => coordonnées en X du minimum de la bourriche (int). % Y => coordonnées en Y du minimum de la bourriche (int). % angle orientation => angle d'orientation du minimum de la bourriche (int). % % mat huitre déposer -> Huitre orientée sur le minimum de la bourriche % % Constantes. % Valeur d'un pixel blanc. NIVEAU GRIS PIXEL BLANC=255; % Initialisations % Pour chaque angle testé, on incrémente compteur _ de position. compteur de position=0; % Initialisation. vect critere depot huitre=[]; tab caracteristique minimum bourriche=[]; tab critere depot huitre=[]; matrice huitre deposer=[]; angle orientation = modulo (vect caracteristique minimum bourriche(1,4),360); moyenne niveaux gris bourriche=double(moyenne niveaux gris bourric he); struct huitre positionner=struct('matrice huitre',[]); IO % Coordonnées du minimum de la bourriche Xmin bourriche et Ymin bourriche for angle = angle orientation-teta : teta/2 : angle orientation + teta % Creation d'un vecteur position où sera positionné le minimum 15 de l'huitre. Xmin bourriche=vect caracteristique minimum bourriche(1,2); Ymin bourriche=vect caracteristique minimum bourriche(1,3); niveau gris minimum bourriche=vect caracteristique minimum bourric 20 he(l,l); vert position huitre=[double(niveau gris minimum bourriche),... double(Xmin bourriche),... double(Ymin bourriche),... double(angle)]; 25 Si niveau gris minimum bourriche = 255 alors on est a l'extérieur de la bourriche. if (niveau gris minimum bourriche -=NIVEAU GRIS PIXEL BLANC) % Positionnement de l'huitre sur ce minimum. [mat huître positionner,structhuitre] = position(mat_huitre,vect_position_huitre,nb lignes_ bourriche,nb_co lonnes bourriche); % Si un point de 1 huitre sort de 1 image alors la matrice 5 % mat huitre positionner est vide. if ( isempty(mat_huitre_positionnerl:,: ) % Calule de la matrice des differences de niveaux entre la bourriche et l'huitre mat difference = 10 difference(mat_bourriche,mat_huitre_positionner,moyenne_niveaux_gr is bourriche,struct huitre); % si 1 huitre sort de la bourriche alors test bourriche=l. if (.isempty(mat_difference(:,:))) 15 critere = testespace(mat difference); compteur de position=compteur_de_position+l; tab_criteredepot_huitre(compteur_ de_position,:)=critere; tab caracterist:ique_minimum_bourriche(compteur_de_position,:) =vect_position_huitre; 20 struct huitre positionner(compteur_ de_ positlon).matrice_huitre=mat huitre positionner; end end 25 end if-isempty(tab_critere_depot_huitre(:,:)) % L'huitre n'est pas deposée. % On recupère la ligne des tableaux ligne ideal = choix_position(tab_critere_depot_huitre); 30 vect_criteredepot_huitre=tab_critere_depot_huitre(ligneideal,:); end vect caracteristique minimum bourriche =- tac caracteristique minimum bourriche(ligne ideal,:); mat huitre deposer= struct huitre positionner(ligne ideal).matrice huitre; else vect caracteristique minimum bourriche=[]; mat huitre deposer=[]; end return Annexe A7 function mat difference = difference(mat bourriche,mat huitre,moyenne niveaux gris bourriche ,struct huitre) % % DESCRIPTION % Calcul des différences de niveaux entre la matrice de l'huître et celle de la bourriche sur un minimum donné. % Les valeurs négatives obtenues sont les hauteurs d'espaces vides entre l'huître et la bourriche. Celles qui sont positives traduisent un encastrement de 1' huître dams la bourriche. % % ENTREES % mat huitre -> Matrice de l'huître (500*500) au format unsigned integer de 8 bits. % % mat bourriche -> Matrice de la bourriche (500*500) au format unsigned integer de 8 bits. 0 0 % moyenne niveaux gris bourriche -> Moyenne des niveaux de gris de la bourriche. % struct_huitre -> Structure d'entiers : % hauteur : Niveau de gris du point le plus bas de l'huitre dans la bourriche. % abscisse : Abscisse du minimum de l'huitre dans la bourriche. % ordonnee : Ordonnée du minimum de l'huitre dans la bourriche. % orientation : Orientation de l'huître. % deposer : Boolean vaut 1 si l'huître est déposée 0 sinon. % valeur sap : Point le plus haut de l'huître (int). % valeur inf : Point le plus bas de l'huître (int). % valeur gauche : Point le plus à gauche de l'huître (int). % valeur droite : Point le plus à droite de l'huître (int). % % SORTIE % mat difference -> Matrice des différences au format unsigned integer de 8 bits. % % % % Valeur d'un pixel blanc. NIVEAU GRIS PIXEL BLANC=255; % Initialisation du pas de balayage entre les points à calculer. pas balayage=4; % Marge (en pixels) pour ne pas placer 1 huitre trop sur les bords. marge bord bourriche=30; % Boolean pour savoir si l'huitre sort de la bourriche. test bourriche = 1; % Préallocation. mat difference=[]; % Passage en double des matrices pour les calculs arithmétiques. mat huitre= double(mat huitre); mat bourriche= double(mat bourriche); Determination de la hauteur de l'huître. On récupère le niveau de gris du minimum de la matrice huître. niveau gris mini huitre = min(min(mat huitre)); % On eleve l'huitre pour la ramener à l'echelle de la % bourriche. Le coefficient "10/9" est déterminé par test, il influe seulement sur l'équilibre huitre/bourriche. mat huitre=mat huitre+(moyenne niveaux gris bourricheniveau gris mini huitre*(10/9))*(mat huitre-'-=NIVEAU GRIS PIXEL BLA NC) ; On fait varier i de la valeur gauche de l'huitre à la valeur droite de l'huitre et j de la valeur inf de l'huître à la valeur_sup de l'huitre. for i = struct huitre.valeur sup:pas balayage: struct huitre.valeur inf for j = struct_huitre.valeur_gauche:pas_balayage: struct_ huitre. valeur_droi te if (mat huitre(i,j)-=NIVEAU GRIS PIXEL BLANC) % marge bord bcurriche est une marge pour ne pas placer 1 huitre trop sur les bords. if (mat bourricIe (i, i) Matrice des différences au format unsigned integer de 8 bits. % % SORTIE % vect critere depot huitre -> Vecteur de valeurs numériques contenant les statistiques d'un minimum : % deposer -> Indicateur d'acceptation (boolean) de l'emplacement (si deposer = 1, le lieu est retenu). % pic max absolu => Valeurs des pics maximales (double). % pic min absolu => Valeurs des pics minimales (double). % difference pic max pic min => Différence entre les deux pics (double). % moyenne sup zero => Niveau moyen des points positifs de la matrice des différences (double). % pourcentage sup zero => Pourcentage de points positifs (double). % % Acquisition taille matrice. [nb lignes,nb colonnes] = size(mat difference); n sup zero=0; total sup zero=0; moyenne sup zero=0; n diff zero=0; pic max absolu=0; pic min absolu=0; difference pic max pic min=O; pourcentage_sup_zero=0; % Si mat difference est vide, alors 1' huitre depasse de la bourriche. if (isempty(mat__difference(:,: ) deposer =0; else deposer=l; % ensuite, si il existe des pics trop importants % n sup zero est le nombre de points supérieurs à 0 % total sup zero est la somme de tous les points positifs % moyenne_sup_zero est donc la moyenne de tous les points positifs % pourcentage _ sup zero est le pourcentage de point sup à 0 % max et min absolu picmax_absolu=max(max(mat_difference)); pic min absolu=min(min(matdifference)); difference_picmax_pic_min = pic_max_absolu - pic_min_absolu; % pourcentage de points positifs for i = l:n:b lignes for j=l:nb colonnes if (mat difference(i,j)-=0) n diff zero=n diff zero+l; end if (mat difference(i,j)>0) m=mat difference(i,j); n_sup_zero=nsup_zero+l; total sup zero=m + total _ sup zero; end end end if (n sup zero-=0) moyenne _ sup_ zero = total_sup_zero/n__sup_zero; if (n diff zero=0) pourcentagesup_zero = n_sup_zero/n_diff_zero*100; else end moyenne _ sup_ zero = 0; pourcentage sup_z else end end vect critere de_pot huitre = [deposer, pic_max_absolu, picmin_absolu, difference_pic_max_pic_min, moyenne _ sup_ zero, pourcentage_sup zero]; Annexe A9 % Remplie la bourriche d'huitre function [struct_huitre,mat_bourriche_rempl:ie] = remplissage( mat_huitre,vect_caracteristique_minimum_bou:rriche,mat_bourriche, moyenne_niveaux_gris_bourriche,nb_lignes bourriche, nb_colonnes_bou rriche,nblignes huitre,nbcolonnes_ huitre, vect_critere_depot_huit re,mat huitre deposer, struct_huitre) % % DESCRIPTION % Cette fonction determine le positionnement de l'huitre autour du 25 minimum de la bourriche et remplit celle ci. % % ENTREES % mat_huitre -> Matrice de l'huître (240*240) au format unsigned integer de 8 bits. ero=0; 30 % % vect caracter:istique_minimum_bourriche -> Vecteur contenant les caractéristiques du minimum de la bourriche.. % Vecteur = [ Z, X, Y, angle orientation ] % Z => niveau de gris du minimum de =_a bourriche (int). % X => coordonnées en X du minimum de la bourriche (int). % Y => coordonnées en Y du minimum de la bourriche (int). % angle orientation => angle d'orientation du minimum de la bourriche (int). % % mat bourriche -> Matrice de la bourriche (500*500) au format unsigned integer de 8 bits. % % moyenne _ niveaux_ gris_ bourriche -> Moyenne des niveaux de gris de la bourriche. % % teta -> Pas de balayage autour du minimum. % % nb lignes bourriche -> Nombre de lignes de la matrice bourriche (int). % % nb colonnes bourriche -> Nombre de colonnes de la matrice bourriche (int). % % SORTIE % mat bourriche remplie -> Matrice de la bourriche remplie (500*500) au format unsigned integer de 8 bits. % % struct_huitre -> Structure d'entiers : % hauteur : Niveau de gris du point le plus bas de l'huitre dans la bourriche. % abscisse : Abscisse du minimum de l'huitre dans la bourriche. % ordonnee : Ordonnée du minimum de 1'huitre dans la bourriche. % orientation : Orientation de l'huître. % deposer : Boolean vaut 1 si l'huître est déposée 0 sinon. valeur sup : Point le plus haut de l'huître (int). % % valeur inf : Point le plus bas de l'huître (int). % valeur gauche : Point le plus à gauche de l'huître (int). % valeur droite : Point le plus à droite de l'huître (int). % % Valeur d'un pixel blanc. NIVEAU GRIS PIXEL BLANC=255; % Préallocation. mat bourriche remplie=zeros(nb_lignes_bourr.iche,nb_colonnes_bourri che); if isempty(vect_critere_depot_huitre(:,:)) % L'huitre n'est pas deposée. struct_huitre.deposer = 0; mat bourriche remplie=[]; else % On recupère la ligne des tableaux % Positionnement de l'huitre sur le minimum. struct huitre.hauteur=vect caracteristique_minimumbourriche(:, 1); struct huitre.abscisse=vect caracteristique_minimumbourriche(:,3) struct huitre.o2donnee=vect caracteristique_minimum bourriche(:,2) struct huitre.deposer=vect_critere_depot_huitre(1,1); mat huitre positionner= double(mat_huitre_deposer); 5 % Début du remplissage. if(struct huitre.deposer) pic_max_absolu=vectcritere_depot_huitre(1,2); % Les matrices :-nitre et bourriche de dimension 500*500 for i=l: 1:nb lignes bourriche 10 for j=l:1:nb_colonnes_bourriche if(mat huitre positionner(i,j)-'=NIVEAU_ GRIS_ PIXEL_ BLANC) mat bourriche(i,j)=moyenne_niveaux_ gris_ bourriche+pic_max_absolu; end 15 end end end % moyenne niveaux gris bourriche+picmax_absolu mat bourriche remplie=uint8(mat_bourriche); 20 end Annexe A10 function main % % DESCRIPTION 25 % %Calcul du point dit 'le centre de masse' de la matrice des deux faces d'une huitre. %La coordonnée représentant la hauteur de ce point permet de déterminer quelle est la face traitee entre la face dite "Plate" 30 et celle dite "Retournée" % % % Recherche centre de gravité d une huitre tic % On sélectionne et traite l'huitre N 17 (exemple) alpha = 17; a = sprintf('\n Acquisition #1 ...\n'); disp(a); image_huitre = sprintf('Images_finales\\Huitres_tres_grosses\\ facel \\h %d p.omp',alpha); % TRAITEMENT DE L'HUITRE % acquisition de la matrice de hauteurs de l'huitre mat huitre temp = imread(image huitre); mat huitre = mat huitre temp(:,:,1); % mat huitre est de type uint8 mat huitre=Traitement Huitre tg(mat huitre); %inversion couleur huitre mat huitre(:,:)=mat huitre(:,:)*255; mat huitre = uint8(mat huitre); %initialisation [nb c, nb 1, n]=size(mat huitre); m=0; x=O;y=O;z=O;xg=O;yg=O; zg facel-0; mat huitre=double(mat huitre); for i=1:l:nb c for j=1:1:nb l if(mat huitre(i,j)>20) % Detection de l'image à travers des niveaux de gris supérieurs à un seuil minimum égal à 20 m=m+l;x=x+i; y=y+j;z=z+mat huitre(i,j); % Calcul du centre de masse pour n points end end end %resultats -> Coordonnées du Centre de Gravité xg=x/m;yg=y/m;zg_facel=z/m; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% a = sprintf('\n Acquisition #2 ...\n'); disp(a); image_huitre = sprintf('Images_finales\\Huitres_tres_grosses\\face2\\h_%d r.bmp', alpha); % TRAITEMENT DE L'HUITRE % acquisition de la matrice de hauteurs de l'huitre mat_ huitre_temp = imread(image_huitre);mat_huitre = mat huitre temp(:,:,1); % mat huitre est de type uint8 mat huitre=Traitement Huitre tg(mat huitre); %inversion couleur huitre mat huitre(:,:)=mat huitre(:,:)*255; mat huitre = uint8(mat huitre); %initialisation [nb c, nb 1, n]=size(mat huitre); m=0;x=0;y=0; z=0; xg=O;yg=O; zg_face2=0; mat huitre=double(mat huitre); for i=1:l:nb c for j=1:l:nb_l if(mat huitre(i,j)>20) % Detection de l'image à travers des niveaux de gris supérieurs à un seuil minimum égal à 20 m=m+l;x=x+i; y=y+j; z=z+mat_huitre(i,j); %Calcul du centre de masse(degravité) de l'image end 49 end end %resultats xg=x/m;yg=y/m; zg_face2=z/m; % La différence de Hauteur du centre de gravité permet de déterminer la face acquise. if (zg_face2:> zg_facel) a = sprintf('la face 1 représente la valve inférieure de l'huitre h%d_p.bmp',alpha); disp(a); 10 else a = sprintf(" la face 1 représente La valve supérieure de 1 huitre h%d_p.bmp',alpha); disp(a); end 50 REVENDICATIONS 1. Procédé de mise en place d'huîtres dans une bourriche comprenant les étapes suivantes : acquisition d'une représentation courante de la surface intérieure de ladite bourriche (21), comprenant au moins une zone minimum, correspondant à un creux dans ladite surface ; acquisition d'au moins une information représentative d'une huître à placer dans ladite bourriche (22) ; traitement (23) des données correspondant à ladite représentation courante de la surface intérieure de la bourriche et à la ou auxdites informations représentatives de ladite huître, de façon à associer une desdites zones minimum à ladite huître ; mise en place (24) de ladite huître dans ladite bourriche à un emplacement défini par ladite zone minimum associée. 2. Procédé selon la revendication 1, caractérisé en ce que ladite étape d'acquisition d'une représentation courante de la surface intérieure de ladite bourriche (21) comprend une obtention d'une image représentative de ladite surface (211), par combinaison d'au moins deux images délivrées par au moins une caméra (42). 3. Procédé selon la revendication 2, caractérisé en ce que ladite étape d'acquisition d'une représentation courante de la surface intérieure de ladite bourriche (21) met en oeuvre un ensemble (41) mobile en translation au-dessus de ladite bourriche, portant ladite ou lesdites caméras (42) et au moins une source laser (45) éclairant ladite surface. 4. Procédé selon la revendication 2, caractérisé en ce que ladite étape d'acquisition d'une représentation courante de la surface intérieure de ladite bourriche (21) met en oeuvre des moyens de déplacement de ladite bourriche en regard de ladite ou desdites caméras (42) et/ou d'au moins une source laser (45) éclairant ladite surface.L 5. Procédé selon l'une quelconque des revendications 2 à 4, caractérisé en ce que ladite image est composée de pixels, une différence des valeurs de ces pixels correspondant à un dénivelé dans ladite surface. 6. Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce que ladite étape d'acquisition d'au moins une information représentative d'une huître (22) comprend une étape d'obtention d'au moins une vue de ladite huître (221) et une étape d'analyse de la ou desdites images (222). 7. Procédé selon la revendication 6, caractérisé en ce que ladite étape d'analyse (222) comprend les sous-étapes suivantes : détermination d'au moins quatre coordonnées de points de surface définissant un parallélogramme représentatif d'une surface englobante de ladite huître (2221) ; détermination d'une coordonnée de profondeur, correspondant au point le plus bas de ladite huître (2222). 8. Procédé selon l'une quelconque des revendications 1 à 7, caractérisé en ce que ladite étape de traitement (23) comprend les sous-étapes suivantes : comparaison de chacune desdites zones minimum avec lesdites coordonnées (231) ; sélection de la zone minimum offrant la meilleure coïncidence avec lesdites coordonnées, selon au moins un critère prédéterminé (232). recherche de la meilleure orientation pour placer l'huître (232). 9. Procédé selon la revendication 8, caractérisé en ce que ledit critère prédéterminé dépend d'une information relative à des valeurs de collision entre ladite huître et ladite bourriche. 10. Procédé selon l'une quelconque des revendications 8 et 9, caractérisé en ce que ladite étape de comparaison (231) est répétée pour au moins deux positions angulaires distinctes de ladite huître. 11. Procédé selon l'une quelconque des revendications 1 à 10, caractérisé en ce qu'il comprend une étape de détermination de l'orientation de ladite huître. 12. Procédé selon la revendication 11, caractérisé en ce que ladite étape de détermination de l'orientation de ladite huître comprend une étape de détermination du centre de gravité de ladite huître (69), comprenant les sous étapes suivantes : acquisition d'au moins une représentation de chacune des valves de ladite huître (61, 64) ; détermination de la position du centre de gravité de chacune desdites valves (63, 66) ; comparaison de la position du centre de gravité de chacune desdites valves (67). 13. Système de mise en place d'huître dans une bourriche, caractérisé en ce qu'il comprend des moyens : d'acquisition d'une représentation courante de la surface intérieure de ladite bourriche, comprenant au moins une zone minimum, correspondant à un creux dans ladite surface ; d'acquisition d'au moins une information représentative d'une huître à placer dans ladite bourriche ; - de traitement des données correspondant à ladite représentation courante de la surface intérieure de la bourriche et à la ou auxdites informations représentatives de ladite huître, de façon à associer une desdites zones minimum à ladite huître ; - de mise en place de ladite huître dans ladite bourriche à un emplacement défini par ladite zone minimum associée. 14. Système selon la revendication 13, caractérisé en ce qu'il comprend des 25 moyens : d'acquisition d'au moins une représentation de chacune des valves de ladite huître ; de détermination de la position du centre de gravité de chacune desdites valves ; 10 15 20de comparaison de la position du centre de gravité de chacune desdites valves. 15. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre des étapes du procédé de mise en place d'huîtres à l'intérieure d'une bourriche selon l'une quelconque des revendications Ià12.