gehelem 201 Posté(e) 14 novembre 2023 @Cyrille Thieullet je continue à abuser, mais d'une autre manière : tu ne passerais pas mon petit film dans ta moulinette ? https://drive.google.com/file/d/1meQ6O1sWgcIRNGwSBCOfmazl1TlXAow5/view?usp=sharing c'est du mkv, je dois pouvoir le convertir dans un autre format si besoin Partager ce message Lien à poster Partager sur d’autres sites
Cyrille Thieullet 106 Posté(e) 14 novembre 2023 Sur un cycle. En zoomant pour voir les oscillations Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 14 novembre 2023 il y a 20 minutes, Cyrille Thieullet a dit : Sur un cycle. ah génial, merci d'avoir essayé du coup c'est jouable, c'était ma grande peur ton échelle verticale correspond à quoi ? chaque ligne vaut un pixel ? Partager ce message Lien à poster Partager sur d’autres sites
Cyrille Thieullet 106 Posté(e) 15 novembre 2023 Bonjour, La vitesse de capture est peut être trop élevée. Ainsi les deltas seraient trop petits ce qui pourrait induire une instabilité par moment qui se verrait sur le graphique ? A moins que cela ne vienne du motif parfaitement répétitif et l'algo se perdrait ? Des deux à la fois ? Ca s'apparenterait à du bruit de lecture qu'il faudrait filtrer. Quid de micro imperfections sur la mécanique de la monture ? Bon, je n'y crois pas trop. En zoomant, dans plus de 80% des cas c'est un point qui sort de la courbe. De combien de correction par seconde as tu besoin avec ce type de PE, les capacités de calcul du boitier, la réactivité de la monture ? Enfin ta zone de netteté est faible. Ca n'aide pas non plus Sur le ciel et les étoiles, avec une prise toute les 700ms, il n'y a pas ce pb, juste le seeing et dans mon cas la "nervosité" naturelle d'une monture à réducteur harmonique sans correction... En zoomant Cyrille Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 15 novembre 2023 Il y a 2 heures, Cyrille Thieullet a dit : moins que cela ne vienne du motif parfaitement répétitif et l'algo se perdrait ? Des deux à la fois ? Ca s'apparenterait à du bruit de lecture qu'il faudrait filtrer. Oui je suis persuadé que le motif se voit sur cette courbe... Le capteur voit environ 3mm en largeur, donc les 1280 pixels. Soit 2.3um par pixel et aussi (hasard) un mouvement de 2.3 pixel par seconde (la grille fait environ 15cm de diamètre) Et ca semble correspondre à ce que tes screenshots donnent si je lis bien. Il y a une vingtaine de lignes sur l'écran, dont la largeur est parcourue en 550s Ce qui fait 27s par ligne et la moitié par bord de ligne soit 13-14s On dirait bien qu'on voit un battement à cette fréquence, ça indiquerait que le motif joue effectivement. Malheureusement ça correspond aussi au battement des dents de mes poulies (12s) Je vais essayer de tester les différentes méthodes du template match, si ça se trouve ça pourrait donner de meilleurs résultats... Par contre, je ne vois qu'une seule explication au battement rapide d'environ 1s : l'approximation subpixel qui extrapole mal, tantôt trop tantôt pas assez Je n'ai malheureusement pas sous la main un courbe d'EP "en vrai" pour cette monture Dès que je peux j'en sors une pour comparer. Enfin ce qui me met le plus le doute c'est la conclusion si ce truc marche : cette monture est miraculeuse de stabilité. Et c'est pas normal. J'attends toujours mon microscope usb qui devrait me permettre d'avoir un champ bien meilleur, et même peut-être de pouvoir utiliser un CD en guise de grille. Ça ferait un motif pseudo aléatoire qui permettrait peut être au templatematch de donner de meilleurs résultats. To be continued... G. Partager ce message Lien à poster Partager sur d’autres sites
Cyrille Thieullet 106 Posté(e) 15 novembre 2023 4 hours ago, gehelem said: Enfin ce qui me met le plus le doute c'est la conclusion si ce truc marche : cette monture est miraculeuse de stabilité. Et c'est pas normal. C'est parce que j'avais trop d'images et que je n'avais pas la taille des pixels et la durée. En omettant des frames avec des pixels de 2.3 pour arriver autour de 550s de durée ca donne cela : Y a plus le pb de stabilité avec des pics avec un fps moindre ;-) Cyrille Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 15 novembre 2023 Il y a 1 heure, Cyrille Thieullet a dit : ca donne cela : C'est diabolique !!! J'en reviens pas, enfin un truc qui ressemble à une EP, et sacrément précis, fait au sec tranquillou sur le bureau. Dingue, merci. Je vais donc une fois de plus rereretenter d'obtenir un beau graphe comme ça, j'en suis loin encore Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 16 novembre 2023 ça risque de s'améliorer avec ceci, bien pratique avec l'éclairage intégré 10~15€ sur les "plateformes habituelles" Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 16 novembre 2023 bon désolé mais je ne vois pas comment faire autrement que de vous embêter avec mon code... je n'y arrive toujours pas, je ne sais même plus ce que j'arrive à voir : du bruit ou des mouvements à la sortie de ce machin qui passe environ 10 fois par seconde je m'attendrais à ce que les variations des valeurs du subpixel me donnent l'EP Mais non, ça se contente de faire du bruit autour de 0 : Vous voyez un truc qui clocherait là dedans ? (je me suis contenté de copier/coller et d'ajouter des annotations, ce n'est pas du "vrai de vrai" ) void MainWindow::traiterFrame(Mat frameIn) // ici je traite chaque image qui arrive { cv::Mat frame, gray; cv::cvtColor(frameIn, frame, cv::COLOR_BGR2GRAY); // je convertis en noir et blanc int sideSel = 10; Rect roi(sideSel, sideSel, frame.size().width - sideSel, frame.size().height - sideSel); Mat templ = frame(roi); // je selectionne un partie de l'image qui est arrivée /* passage du matchtemplate de base */ /* "previousFrame" contient l'image précédente convertie elle aussi en NB */ int match_method = TM_CCORR_NORMED; // celle ci, ou d'autres, marche pas cv::Mat result_mat; int result_cols = previousFrame.cols - templ.cols + 1; int result_rows = previousFrame.rows - templ.rows + 1; result_mat.create( result_rows, result_cols, CV_32FC1 ); matchTemplate(previousFrame, templ, result_mat, match_method); //normalize( result_mat, result_mat, 0, 1, NORM_MINMAX, -1, Mat() ); // je ne sais pas s'il faut normaliser ou pas ... essayé avec et sans ... /* detection du min/max */ double minVal; double maxVal; Point minLoc, maxLoc, matchLoc; minMaxLoc(result_mat, &minVal, &maxVal, &minLoc, &maxLoc, cv::Mat() ); if( match_method == TM_SQDIFF || match_method == TM_SQDIFF_NORMED ) matchLoc = minLoc; else matchLoc = maxLoc; /* et le fameux subpixel, sans rien changer à l'implémentation */ subPix = (cv::Point2d)matchLoc; minMaxLocSubPix(&subPix, result_mat, &matchLoc, 1); (...) } Partager ce message Lien à poster Partager sur d’autres sites
Cyrille Thieullet 106 Posté(e) 16 novembre 2023 (modifié) Bonjour, Là tu a un matchLoc qui est toujours exactement à 10, 10, comme le coef Sidel qui sert à calculer le roi. Aussi, d'une frame à l'autre il n'y a aucun mouvement pourtant j'imagine que le film bouge. Ca veut dire que la pattern (templ) que tu cherches se retrouve toujours au même endroit dans la frame où tu cherches. Normalement templ est fixe entre N frames et ce n'est qu'après un mouvement qui amène le rectangle de mathcing à sorting de la frame qu'il faut le réinitialiser (> à 10 dans ton cas) J'ai l'impression que tu fais l'inverse en extrayant templ à chaque frame et le résultat est statique. Cyrille Modifié 16 novembre 2023 par Cyrille Thieullet Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 17 novembre 2023 Il y a 18 heures, Cyrille Thieullet a dit : Normalement templ est fixe entre N frames et ce n'est qu'après un mouvement qui amène le rectangle de mathcing à sorting de la frame qu'il faut le réinitialiser. Merci pour ton aide J'essaie cette méthode (sans vraiment comprendre la différence) mais encore sans succès depuis hier soir, je vais persévérer. Je suis sans doute en plein paradoxe de Xenon. Partager ce message Lien à poster Partager sur d’autres sites
Cyrille Thieullet 106 Posté(e) 17 novembre 2023 Bonjour, Le principe d'avoir un snapshot fixe de la référence (zone centrale - une bordure à définir) et de la chercher après dans une suite d'image c'est pour stabiliser l'algo. C'est d'autant plus vrai si la focale est courbe car le mouvement va être très lent. Plus l'écart est grand plus ca va être fiable : plus j'attends pour changer la référence, plus je vais avoir de mouvement et plus le calcul va fonctionner. Regarde les courbes avec les pics quand j'ai traité toutes tes images et celle en prenant une image sur 8. Faire du subpixel quand ca bouge pas de plus d'un pixel ca devient plus aléatoire. Et il arrive un moment où la partie de la référence en superposition avec la zone centrale de l'image en cours est trop petite (à calibrer), alors on en reprend cette nouvelle zone centrale de la dernière image comme référence et c'est reparti. Cyrille Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 17 novembre 2023 Il y a 2 heures, Cyrille Thieullet a dit : Bonjour, Le principe d'avoir un snapshot fixe de la référence (zone centrale - une bordure à définir) et de la chercher après dans une suite d'image c'est pour stabiliser l'algo. C'est d'autant plus vrai si la focale est courbe car le mouvement va être très lent. Plus l'écart est grand plus ca va être fiable : plus j'attends pour changer la référence, plus je vais avoir de mouvement et plus le calcul va fonctionner. Regarde les courbes avec les pics quand j'ai traité toutes tes images et celle en prenant une image sur 8. Faire du subpixel quand ca bouge pas de plus d'un pixel ca devient plus aléatoire. Et il arrive un moment où la partie de la référence en superposition avec la zone centrale de l'image en cours est trop petite (à calibrer), alors on en reprend cette nouvelle zone centrale de la dernière image comme référence et c'est reparti. Cyrille oui, je pense avoir compris du coup j'ai du mieux mais maintenant "ça saute" au changement de template... comment fais-tu pour arriver à la continuité ? je me demande si je ne vais pas faire courir 2 ou 3 templates en déphasé, pour écarter celui qui s'approche du bord si besoin 2 Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 17 novembre 2023 Pfff Suis pas loin du découragement Je patauge et je vous enquiquine avec des trucs qui semblent simples, à un moment il faut savoir dire qu'on est une buse... Je vais continuer ce WE, mais après ça rejoindra l'immense tiroir des tentatives de bidouilles avortées. Besoin de dormir un peu... Partager ce message Lien à poster Partager sur d’autres sites
mala05 1 071 Posté(e) 17 novembre 2023 Il y a 1 heure, gehelem a dit : Pfff Suis pas loin du découragement Je patauge et je vous enquiquine avec des trucs qui semblent simples, à un moment il faut savoir dire qu'on est une buse... Je vais continuer ce WE, mais après ça rejoindra l'immense tiroir des tentatives de bidouilles avortées. Besoin de dormir un peu... Cyrille me rependra si j'ai pas bien suivi mais au moment où tu bascules de mire tu appliques le delta de position entre les deux mires à tes nouvelles mesures pour ne pas décrocher et ainsi de suite. Partager ce message Lien à poster Partager sur d’autres sites
Cyrille Thieullet 106 Posté(e) 17 novembre 2023 (modifié) Ah Bravo c'est proche du but ! Le truc c'est d'arrêter avant le bord. J'ai pas été assez clair au dessus. Il faut que tu arrêtes le rectangle vert avant le bord. Je m'arrête quand maxLoc.x <5 ou maxLoc.y<5 ou maxLoc.x+ref.cols > width-5 et maxloc.y+ref.rows >height-5 A ce moment là, je prends une nouvelle ref au centre. Et là il n'y aura plus de saut ;-) Il te faudra redresser le graph avec une regression lnéaire. Après aussi tu peux prendre peut être une zone plus grande ca sera plus stable. Cyrille Modifié 17 novembre 2023 par Cyrille Thieullet 1 Partager ce message Lien à poster Partager sur d’autres sites
mala05 1 071 Posté(e) 17 novembre 2023 @gehelem 100% d'accord avec Cyrille. Tu y es presque! La régression linéaire derrière (attention que sa plage soit bien multiple de ta période de vis sans fin) va te permettre d’annuler la vitesse sidérale et tu l'auras ta courbe d'EP. Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 17 novembre 2023 Il y a 2 heures, Cyrille Thieullet a dit : Le truc c'est d'arrêter avant le bord. J'ai pas été assez clair au dessus. Il faut que tu arrêtes le rectangle vert avant le bord. Je m'arrête quand maxLoc.x <5 ou maxLoc.y<5 ou maxLoc.x+ref.cols > width-5 et maxloc.y+ref.rows >height-5 oui, c'est ce que j'ai compris et essaie de faire ce qui est trompeur sur mon screenshot c'est que la position initiale du template c'est le vert, et le rouge c'est là ou je le retrouve sur la frame courante le mouvement est de droite à gauche et de haut en bas donc là tu vois que le rouge arrivant à gauche je m’apprêtais à basculer sur un nouveau template, et ça allait décrocher (j'ai fait le screeshot juste avant) En tout cas je crois bien que je fais ce que tu m'as expliqué. Sur la régression en effet, la difficulté est de trouver les bonnes valeurs... il suffit que je bouge un peu le capteur et ça me fiche tout par terre il faudrait que j'arrive à l'estimer à la volée, en disant que grosso modo sur au moins 8 minutes (période de ma VSF) je dois avoir une moyenne à 0 J'en suis pas encore là, je tatonne en la calculant avec une feuille de calcul à posteriori chaque chose en son temps (sur mon screenshot j'en applique bien une, mais est elle est trop intense car sans régression ça dévie vers le bas) Bref, faut que j'arrive d'abord à faire sauter ces sauts, j'ai encore de la choucroute dans la tête. Il y a 2 heures, mala05 a dit : @gehelem 100% d'accord avec Cyrille. Tu y es presque! La régression linéaire derrière (attention que sa plage soit bien multiple de ta période de vis sans fin) va te permettre d’annuler la vitesse sidérale et tu l'auras ta courbe d'EP. Merci ! Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 18 novembre 2023 hé bin dis donc !!! cette fois ci je la tiens, qu'à trouver la bonne regression sur 500s, par d'accrocs, en direct, etc ... Oouf Merci pour votre aide Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 18 novembre 2023 Hé ? c'est pas beau ça ? 1 2 Partager ce message Lien à poster Partager sur d’autres sites
Cyrille Thieullet 106 Posté(e) 18 novembre 2023 Bonjour @gehelem Champion 😁 Le gros trait horizontal au milieu de la zone doit bien aider aussi. Top. Cyrille Partager ce message Lien à poster Partager sur d’autres sites
mala05 1 071 Posté(e) 18 novembre 2023 Il y a 6 heures, gehelem a dit : c'est pas beau ça ? Belle! Un asservissement en boucle fermée et tu l'as ton TDM! Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 18 novembre 2023 Il y a 2 heures, mala05 a dit : Belle! Un asservissement en boucle fermée et tu l'as ton TDM! ça va être une boucherie, j'ai pas fini de vous enquiquiner 1 Partager ce message Lien à poster Partager sur d’autres sites
spider_cochon 495 Posté(e) 18 novembre 2023 (modifié) Vous êtes des monstres les gars ! Les fabricants d'encodeurs sont en train de trembler :-) Vous envoyez les corrections à la monture via le port st4 ? Modifié 18 novembre 2023 par spider_cochon Partager ce message Lien à poster Partager sur d’autres sites
gehelem 201 Posté(e) 18 novembre 2023 ... un peu plus tard... Hyper stable en fait 1 Partager ce message Lien à poster Partager sur d’autres sites