| Deutsch English Français Italiano |
|
<vmrm21$16rf0$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: efji <efji@efi.efji>
Newsgroups: fr.sci.maths
Subject: =?UTF-8?Q?Re=3A_Alg=C3=A8bre_lin=C3=A9aire_et_string_art?=
Date: Wed, 22 Jan 2025 21:56:33 +0100
Organization: A noiseless patient Spider
Lines: 113
Message-ID: <vmrm21$16rf0$1@dont-email.me>
References: <A9bEoEV28vfRo7310cGKP1UxNmk@jntp> <vml6k9$31l7r$1@dont-email.me>
<UkIBPlw1ZkO4EbuSELmygF1mdk8@jntp>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 22 Jan 2025 21:56:34 +0100 (CET)
Injection-Info: dont-email.me; posting-host="75e501f54246c9105ea8086895371b9a";
logging-data="1273312"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/zetzFHFDsrLZSvEiblNBN"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:q67lV3gh4LBfKquUfvwe2zNwwwQ=
In-Reply-To: <UkIBPlw1ZkO4EbuSELmygF1mdk8@jntp>
Content-Language: fr, en-US
Bytes: 6517
Le 22/01/2025 à 21:32, Julien Arlandis a écrit :
> Le 20/01/2025 à 10:56, efji a écrit :
>> Amusant, je n'avais jamais entendu parler de ça.
>>
>> Le 19/01/2025 à 12:00, Julien Arlandis a écrit :
>>> Bonjour,
>>>
>>> J'essaye de développer un algorithme rapide et efficace pour
>>> représenter des images en niveaux de gris par le string art. Il
>>> s'agit de relier un ensemble de points (généralement matérialisés par
>>> des clous plantés dans une planche) par un fil tendu jusqu'à
>>> s'approcher au plus près de l'image désirée. Pour la suite, on
>>> considèrera que les points sont régulièrement espacés sur un cercle
>>> de rayon R.
>>>
>>> Intuitivement, on peut être tenté de modéliser le problème par un
>>> espace vectoriel constitué des N(N-1)/2 segments formés par chaque
>>> paire de points. Cette idée est plus rigoureusement exprimée dans
>>> cette vidéo :
>>>
>>> <https://www.youtube.com/watch?v=WGccIFf6MF8>
>>
>> La vidéo explique très bien tout ce qu'il faut savoir de l'approche
>> "directe", de type algèbre linéaire, et dit pourquoi ça ne marche pas
>> bien. Elle propose à la fin un algo qui marche raisonnablement, mais
>> on pense tout de suite au scanner médical et à la transformée de Radon.
>>
>> https://www.youtube.com/watch?v=dBlSmg5T13M
>>
>> Bingo! la seconde vidéo développe la méthode utilisant la transformée
>> de Radon de façon super claire. Problem solved. Je ne pense pas qu'on
>> puisse faire mieux.
>>
>> Merci d'avoir indiqué cette chaine youtube qui contient plein de
>> choses intéressantes, mais hélas rien sur les nombres complexes pour
>> les débiles mentaux :)
>>
>>>
>>> Sous cette approche, le problème se modélise par l'équation
>>> matricielle :
>>> somme(a_i * x_i) = b
>>> où a_i est le i ème vecteur (image matricielle du segment i)
>>> x_i est le nombre de fils reliant le segment i
>>> b l'image à atteindre.
>>> Sachant que la famille de vecteurs a_i ne forment pas une famille
>>> génératrice complète, (il est facile à comprendre qu'une image
>>> constituée d'un cadre blanc périphérique ne pourra pas être générée
>>> sans assombrir la partie blanche), quelle est la limite et la
>>> pertinence de cette approche ?
>>
>> Non, ce n'est pas la bonne approche pour deux raisons, bien expliquées
>> dans la video :
>>
>> 1/ le passage d'un "fil" à une ligne de pixels ne doit pas se faire
>> naïvement car sinon on privilégie certaines directions. C'est le même
>> problème que l'aliasing en image. La vidéo propose une sorte de profil
>> élargi des fils permettant de traiter ce problème de façon heuristique
>> et "perceptive".
>>
>> 2/ même si on néglige le point 1, le problème n'est pas linéaire car
>> on doit chercher des a_i dans {0,1} et pas dans \R. Résoudre de façon
>> classique, par moindres carrés, le problème linéaire surdéterminé que
>> tu indiques va donner des a_i réels quelconques, y compris des
>> négatifs qui n'ont pas de sens. Minimiser ||somme(a_i * x_i) - b||^2
>> avec la contrainte a_i = 0 ou 1 est un problème appelé "bang-bang"
>> très difficile à résoudre, qui a plein de mauvaises propriétés (en
>> particulier il est non convexe).
>>
>>>
>>> Pour ma part j'ai commencé à coder une méthode itérative qui consiste
>>> à partir d'un point arbitraire pour relier le point dont le segment
>>> s'approche au plus près de l'image à construire. Ce n'est pas assez
>>
>> Ca a peu de chances de marcher. On doit même pouvoir construire des
>> images pour lesquelles ça ne marche pas du tout. Et puis "le segment
>> qui s'approche au plus près" ne doit pas être simple à trouver, sauf à
>> tester tout exhaustivement. Ensuite il faut soustraire le segment
>> choisi de l'image et tout recommencer pour l'itération suivante. Un
>> bel algo en n^3 :)
>
> Pour avoir intensivement comparé les deux méthodes depuis 3 jours, les
> deux méthodes présentent des avantages et des inconvénients qui les
> rendent difficiles à partager.
> La méthode itérative permet d'atteindre une image visuellement
> reconnaissable beaucoup plus rapidement (en nombre de segments) qu'en
> passant par la transformée de Radon. L'image commence à se former à
> partir de 1000 segments avec la méthode itérative, avec Radon on
> commence à voir un résultat à partir de 10000 segments. Naturellement on
> obtient une résolution plus élevée avec cette méthode alors que le
> contraste se dégrade significativement avec l'approche itérative si on
> se rapproche du nombre de segments nécessaires pour un résultat
> acceptable avec Radon.
>
> Pour mes tests je suis parti sur une résolution de 288 points répartis
> sur un cercle à partir du fichier suivant : https://ibb.co/x3qZ6wp
Ah mince, très mauvaise image. Tu n'avais pas de photo du docteur Hachel?
>
> Méthode radon, 18000 segments :
> https://ibb.co/NtMbJn9
>
> Méthode itérative, 4000 segments :
> https://ibb.co/phyC2Yw
>
Intéressant. Le rendu est vraiment très différent. Clairement Radon est
plus "proche" de l'image de départ, mais l'autre méthode donne un rendu
plus agréable je trouve. En particulier il n'y a pas cette singularité
au centre ni la concentration sur les bords.
--
F.J.