IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

Redresser une page manuscrite


Sujet :

Traitement d'images

  1. #1
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 13
    Points
    13
    Par défaut Redresser une page manuscrite
    Bonjour et merci de me lire avec indulgence et de m'excuser la longueur du mot.

    Je voudrais comprendre et apprendre ce qui serait la meilleure solution pour redresser et normer les caractères et les mots sur une image de page manuscrite.

    Le problème :
    Une page manuscrite (type parchemin) est réalisée sur un support dont la teinte varie du beige très clair au brun foncé quand l'encre d'écriture va du noir au bleu en passant par le sépia et beaucoup de couleurs diverses, et varie sur le parchemin en teinte et en contraste sur ce fond.
    Ce fond en parchemin est souvent constellé de petites taches foncées qui correspondent à l'implantation originelle des poils (la crasse a rempli le pore d'où la tache foncée).
    De plus les lignes d'écritures, hors travail des enlumineurs, sont souvent ondulantes et parfois suivent le bord de la peau, s’écartent les unes des autres, etc. Les caractères peuvent aussi avoir plusieurs tailles en fonction de leur position dans le texte, leur qualité variant en fonction de la fatigue de la main du notaire...

    Le but de cette question est donc de comprendre comment redresser et normer la page manuscrite pour la rendre accessible à la lecture automatique, afin de traduction (je fais cela pour mon plaisir).

    Pour ce qui est du déchiffrement de chaque caractère, voir de mots, j'ai une idée, mais avant de la mettre en œuvre, encore faut-il que la page d'écriture à traiter puisse être de qualité égale tant pour la taille et la teinte des caractères depuis le premier jusqu'au dernier, et que les lignes soient bien horizontales.

    Concernant le nettoyage, les pages tuto sur les filtres de DEVELOPPEZ.COM m'ont permis d'affiner les solutions envisagées.

    Par contre pour le redressement de la page et des lignes...

    Voici ce que j'imagine :
    a) Recherche des quatre coins (réel ou virtuel) du document originel de travail (DOT)
    Mais quelle est la meilleure solution ?
    Principe de segmentation des zones de tons clairs et foncés (contraste) sur le pourtour du DOT ?
    Définition des coins (y, x) effectifs de la zone d'écriture du DOT.
    Ou autrement ?

    b) Comparaison des positions (y, x) de chaque coin vis à vis des autres pour définir la surface optimale d'écriture (SOE).
    Celle-ci pouvant être d'une taille différente de celle du DOT

    c) Comparaison de chaque colonne (y) et rangée (x) du document original avec la hauteur (Y) et largeur (X) de la SOE.
    Mise à l'échelle de chaque colonne (y) et rangée (x) en colonne (Y) et rangé (X).

    A ce niveau (si l'imaginé fonctionne), la page est orthonormée, mais pas les lignes d'écriture du document (puisque la grosseur des caractères est fonction du moment de l'écriture, de la charge d'encre de la plume, etc.).
    Et c'est là que je ne vois pas comment continuer.

    Avec la méthode de segmentation, on peut définir des zones sans qu'il soit besoin d'une grande finesse pour certains texte, mais pour d'autres dont le cuir est abîmé par le temps, c'est une autre paire de manches !
    Comment utiliser le filtre pour discriminer finement mais définir des zones générale ?
    Comment discriminer ce qui relève de la couleur de l'encre et ce qui relève du cuir ?
    J'ai pensé utiliser la comparaison de valeurs de tonalité, de la température, mais je ne vois pas trop comment faire la part des choses entre une couleur brune non régulière et une autre couleur brune, d'autant plus que seul le contraste permet, parfois, le déchiffrement des lettres...

    Sauriez-vous me donner une méthode de traitement, le squelette d'un algorithme s'il vous plait ?
    Je ne demande pas une solution, mais les éléments qui me permettront de trouver ma solution

    Je sais qu'il existe un tas de bibliothèque de traitement graphique, et peut-être existe-t-il des outils tout préparé pour résoudre simplement mon problème sans devoir réinventer le fil à couper le beurre... Mais je n'y connais plus rien du tout (et puis comprendre, c'est tellement mieux !).

    Et, enfin, je travaille sur PC et mon outil de développement sera Delphi (j'ai développé en TPascal pour des process industriel, il y a 35 ans maintenant).

    Je vous remercie de votre attention.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 457
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 457
    Points : 5 905
    Points
    5 905
    Par défaut
    salut

    j'avais lu un article fort intéressant sur le sujet
    regarder ici

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 054
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 054
    Points : 14 501
    Points
    14 501
    Par défaut
    Bonjour,

    après avoir survolé le lien proposé par anapurna (trop de fautes, , et c'est bien facile de partir d'un document noir et blanc tout propre, de le tourner pour dire qu'on va partir de ça puis de le tourner à nouveau avec l'algo qui va bien en chantant "Victoire !", mais ça ne correspond pas à ce qu'on rencontre irl), si je peux me permettre une suggestion, ça serait que tu postes un exemple de document source, qu'on se rende compte avec nos yeux d'abord, de où il faut partir, ça inspirera surement les spécialistes du traitement d'images (dont je ne suis pas, mais le sujet m'intéresse) -- ou pas, car ça sent quand même sa mission impossible, ton truc.

    Cependant, tu aurais pu (dû ?) nous dire où tu en étais,
    Citation Envoyé par Captailereve Voir le message
    Concernant le nettoyage, les pages tuto sur les filtres de DEVELOPPEZ.COM m'ont permis d'affiner les solutions envisagées.
    là on reste un peu sur notre faim : tu pourrais par exemple donner des liens vers les pages en question, et expliquer ce que tu as fait.


    Un dernier mot :
    Citation Envoyé par Captailereve Voir le message
    Et, enfin, je travail sur PC [...]
    non, surement pas, car le verbe "travail" n'existe pas. Merci de faire attention à ce genre de détail, qui a une importance capitale pour la compréhension des textes. On rencontre hélas de plus en plus souvent "je te rappel", "je te conseil", et c'est vraiment pénible/navrant/désagréable/etc.
    Et ce genre de problème fait maintenant l'objet de sujet au J.T. du 20 h, alors bon, il serait peut-être temps de redresser la barre…

  4. #4
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par anapurna Voir le message
    salut

    j'avais lu un article fort intéressant sur le sujet
    regarder ici
    Bonjour Anapurna,
    Merci beaucoup pour ce lien et la peine de m'avoir répondu.
    Comme je suis de cette vieille école qui réalise sur le papier ses analyses avant de les transmuter en code, j'ai commencé mon analyse par ce principe, qui me paraissait fonctionnel, mais qui, dès le papier ne fonctionne qu'avec du texte dactylographier de bonne qualité tant en impression qu'en contraste.

    Le problème est la variabilité du lettrage en cours de ligne et en cours de page.

    Votre lien indique une méthode qui permet effectivement un essai de rotation du texte, mais du texte global ; Or, comme chaque ligne manuscrite a ses propres variabilités, il faudrait réaliser cette manipulation quasi mot par mot... Ce que l’œil et le cerveau font très bien et assez vite avec l'entrainement. D'où la recherche de méthodes automatisantes (oui, néologisme ) via la programmation d'un outil.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Bonjour Jipété,
    Merci à vous aussi de m'avoir répondu et merci aussi de me lire jusqu'au bout, s'il vous plait.

    D'abord, pour l'évacuer, réglons le problème de l'orthographe : non, surement pas, car le verbe "travail" n'existe pas.
    Une faute relevée, pour un dyslexique comme moi, sur une page d'écriture ? Et sans plus avoir de secrétaire pour palier mes déficiences ? miraculeux ! C'est vraiment une victoire, donc merci.

    Cependant...
    L'orthographe peut être un handicape pour certains, c'est mon cas, même si avec l'âge, on arrive à le masquer, un peu.
    Empêcher ces personnes de communiquer, sous prétexte de "respect" ou de toute autre raison, relève de l’intolérance la plus absolue ; Cependant, sans vous flatter, je n'imagine pas un moment que ce soit votre cas. Vous vous élevez contre ce pseudo langage qu'utilisent certain sur leur smartphone, ou contre les formes abâtardies de notre bonne vieille grammaire, ceci par paresse, snobisme ou bêtise ? Voir simplement par habitude...
    Et par extension, de fil en aiguille, on en arrive à s'énerver pour pas grand chose. Aussi, pourriez-vous, peut-être, demander, avec pondération, que votre interlocuteur fasse plus attention, ceci en passant par le message privé.
    Et puis, qui ne commet pas ses propres erreurs relatives au respect de l'interlocuteur...


    Bref !
    Revenons maintenant à mon questionnement.
    si je peux me permettre une suggestion, ça serait que tu postes un exemple de document source, qu'on se rende compte avec nos yeux d'abord, de où il faut partir, ça inspirera surement les spécialistes du traitement d'images (dont je ne suis pas, mais le sujet m'intéresse) -- ou pas, car ça sent quand même sa mission impossible, ton truc.
    Voici le lien pour visualiser des parchemin exemples sélectionnées : https://1drv.ms/u/s!ArFxgTBhICm6gXce...IZM7H?e=GvnNXV
    Ils ne montrent pas le pire qui puisse se rencontrer, mais illustrent bien les différents cas à traiter.

    Comme on le voit, les parchemin gardent une mémoire de leur stockage, ils sont rigides et il est rarement possible de les placer sous une plaque de verre assez lourde pour leur faire retrouver leur planéité native.
    De plus, si cela intéresse, les caractères n'ont pas toujours la même graphie selon leur position dans un mot, et puis l'encre déposée par la plume va en diminuant au fil de l'écriture... Toutes les plumes n'ont pas la même qualité, etc.

    Cependant, tu aurais pu (dû ?) nous dire où tu en étais,
    "Concernant le nettoyage, les pages tuto sur les filtres de DEVELOPPEZ.COM m'ont permis d'affiner les solutions envisagées".
    là on reste un peu sur notre faim : tu pourrais par exemple donner des liens vers les pages en question, et expliquer ce que tu as fait.
    Voici donc le lien que vous réclamez : https://xphilipp.developpez.com/arti.../?page=page_17
    Cependant l'ensemble des pages est intéressant (merci à son auteur) : https://xphilipp.developpez.com/articles/filtres/ et pour l'instant, je suis sur le papier, donc mon travail reste au niveau de l'étude de faisabilité...

    Je pense que la méthode Harris (détection des coins, ici : https://xphilipp.developpez.com/arti...page_18#LXVIII) associée à la méthode de Segmentation (ici https://xphilipp.developpez.com/arti...s/?page=page_1), l'ensemble un peu retravaillé peut donner un bon résultat, mais comment ? Je n'en sais rien. Et, puisqu'il existe des spécialistes, si ceux-ci peuvent m'aiguiller, je leurs en serais gré.

    Merci.

    PS on dit la même chose de l'impossible et du hasard...

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 054
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 054
    Points : 14 501
    Points
    14 501
    Par défaut
    Bonsoir,

    Citation Envoyé par Captailereve Voir le message
    merci aussi de me lire jusqu'au bout, s'il vous plait.
    je lis toujours jusqu'au bout, quand je suis sur un sujet qui m'intéresse, et tu peux me dire "tu", comme sur tous les forums du monde.

    Citation Envoyé par Captailereve Voir le message
    pour un dyslexique comme moi,
    Ça, je ne pouvais pas le deviner.

    Citation Envoyé par Captailereve Voir le message
    ceci en passant par le message privé.
    Et ça j'en ai horreur, pour la bonne et simple raison que si je l'avais utilisé, l'erreur aurait été corrigée (comme ce fut le cas) mais les premiers lecteurs n'auraient pas été au courant de la correction, sauf à tout relire, ce qu'on ne fait pas tous les jours.
    En publiant en ligne, tout le monde (enfin, ceux qui suivent) est au courant qu'une erreur a été corrigée, et je trouve ça bien.

    +++
    Concernant le reste, merci pour les liens, beaux documents donc bon courage !
    Je n'arrive absolument pas à imaginer une quelconque méthode d'amélioration des originaux, sans compter le fait qu'ils sont tous différents, ce qui fait que si une méthode pouvait s'appliquer à l'un il faudrait réinventer la roue pour les autres.
    Quelle horreur…

    Quant à tous ces filtres, hé bien, ce tuto souffre, àmha comme tous les tutos de ce genre, d'une profusion d'images de comparaisons mal fichues : pour chaque filtre on compare l'original à un traitement (parfois 3), mais il n'y a rien pour comparer tous les traitements entre eux, pour savoir lequel utiliser en fonction du document original.
    Car, oui, je me suis rendu compte qu'en termes de redimensionnement d'image (les seuls essais un peu approfondis que j'ai menés il y a quelques mois), le type de sujet avait son importance sur la qualité du rendu des filtres et donc du choix du filtre.

    Par exemple, voilà ce que j'utilise pour faire des séries de tests et comparer les différents résultats : il y a du paysage, de la douceur, du texte dans plusieurs styles, et le damier c'est mortel pour certains algos.
    Nom : 400x300_v4_96.jpg
Affichages : 579
Taille : 155,5 Ko

    Faudra un jour que je me décide à entamer une comparaison des filtres que tu as proposés, mais j'ai tellement de choses à faire avant…

  7. #7
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Redresser une page manuscrite
    Bonjour,

    Je crois que le repérage des signes manuscrits devrait précéder celui des lignes et des séquences de mots: si les lignes sont approximativement droites (un trait relativement discret devait être tracé au préalable, à l'aide d'une règle), elles n'en présentent pas moins, par rapport à leur droite moyenne, des écarts suffisamment importants pour compromettre le découpage envisagé.

    On se trouve ici en présence d'un système de trois couleurs, qui pourrait éventuellement remplacer celui des composantes (r, v, b):
    a) la couleur des zones claires, représentée par le pixel P1 = (r1, v1, b1) ;
    b) celle des taches les plus sombres, associée au pixel P2 = (r2, v2, b2) , et enfin
    c) celle de l'encre, caractérisée par le pixel P3 = (r3, v3, b3) .

    Un transtypage approprié, permettant de passer du triplet d'entiers au format Byte à celui d'un vecteur de 3 réels:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TYPE Pixel = ARRAY[1..3] OF Byte;
         Vect3R = ARRAY[1..3] OF Extended;
    permettrait de caractériser toute couleur locale par la combinaison linéaire:
    V = x.V1 + y.V2 + z.V1
    qui conduit implicitement au système de 3 équations linéaires à 3 inconnues:
    V[i] = x.V1[i] + y.V2[i] + z.V1[i] (pour i - 1, 2, 3) .

    Les coefficients en cause (x, y, z) sont en principe confinés au domaine [0 ; 1]; cependant quelques taches anormales ne manqueront pas de conduire à des valeurs hors intervalle, et il faudra prévoir une correction par écrêtage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PROCEDURE Ecretage(VAR u: Extended);
      VAR w: Extended;
      BEGIN
        w:= u;               IF (w<0) THEN w:= 0;
        IF (w>1) THEN w:= 1; u:= w
      END;
    Le résultat décisif est la valeur du dernier coefficient (z), théoriquement égal à l'unité au niveau d'une zone encrée, et à zéro en tout autre endroit.
    Tu pourrais envisager une nouvelle image du manuscrit, réalisée en clair sur fond noir, et résultant par exemple de l'une des trois transformations suivantes:
    a) une représentation continue par une série de gris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FUNCTION Fpixel_1(s: Extended): Pixel;
      VAR k: Byte; Px: Pixel;
      BEGIN
        FOR k:= 1 TO 3 DO Px[k]:= Round(255 * s);
        Result:= Px
      END;
    b) ou une variante plus contrastée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    FUNCTION Fpixel_2(s: Extended): Pixel;
      VAR k: Byte; p, q, r: Extended; Px: Pixel;
      BEGIN
        p:= s * (1 - s); q:= 1 - (2* s);
        r:= p * q;       FOR k:= 1 TO 3 DO Px[k]:= Round(255 * (s - r));
        Result:= Px
      END;
    c) ou enfin l'option du tout-ou-rien (sans doute la meilleure ?), qui présente le contraste maximal, et dont le seuil est à choisir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FUNCTION Fpixel_1(s: Extended): Pixel;
      CONST Pfond: Pixel = (0, 0, 0);       // Couleur du fond
            Ptext: Pixel = (255, 255, 255); // Couleur du texte
            Seuil = 0.500;                  // Valeur à tester, éventuellement
      VAR Px: Pixel;
      BEGIN
        IF (s>Seuil) THEN Px:= Ptext ELSE Px:= Pfond;
        Result:= Px
      END;
    La résolution du système d'équations décrit plus haut suppose des couleurs de base (V1, V2, V3) linéairement indépendantes; et nettement différentes les unes des autres, si l'on veut que le texte (et lui seul) soit bien restitué.
    Il ne va pas de soi que cette condition soit toujours bien réalisée, comme dans l'exemple ci-dessous:

    Nom : Manuscrit_01.png
Affichages : 589
Taille : 181,3 Ko

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 054
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 054
    Points : 14 501
    Points
    14 501
    Par défaut
    Ah, nous voyons arriver le grand maître du traitement de l'image , et son bouffon (ma pomme) qui agite ses grelots pour tempérer l'enthousiasme.

    Par exemple,
    Citation Envoyé par wiwaxia Voir le message
    On se trouve ici en présence d'un système de trois couleurs, qui pourrait éventuellement remplacer celui des composantes (r, v, b):
    a) la couleur des zones claires, représentée par le pixel P1 = (r1, v1, b1) ;
    b) celle des taches les plus sombres, associée au pixel P2 = (r2, v2, b2) , et enfin
    c) celle de l'encre, caractérisée par le pixel P3 = (r3, v3, b3) .
    Mais ça serait trop simple !
    Un simple coup de loupe sur une zone de texte de ton exemple montre bien qu'il n'y a rien d'uniforme, et qu'on est loin, très loin d'une encre de Chine sortie de son flacon.
    Nom : 1443.jpg
Affichages : 582
Taille : 34,6 Ko
    Surtout quand, en plus, les taches ont les mêmes teintes :
    Nom : tache_à_gauche.jpg
Affichages : 581
Taille : 33,9 Ko

    Notez la "moyenne sur 9 pixels" en bas de la fenêtre "loupe".

    Et moi, face à ça, je me sens complètement démuni.
    Car, mine de rien, l'affreux pli en bas à gauche de ton image risque vite d'être pris pour un grand s long,
    Nom : s_long.jpg
Affichages : 527
Taille : 5,5 Ko , et tout à l'avenant.

    Et comment distinguer les signes supérieurs indiquant une abréviation d'une tache ?

    Un nouveau travail d'Hercule

  9. #9
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 455
    Points
    1 455
    Par défaut
    Bon courage !
    Dans un premier temps, j'essaierais de prendre les clichés de la meilleure qualité possible, avec un éclairage uniforme, les documents bien à plat, etc. Cà facilite beaucoup le travail.
    Ensuite essayer un bête seuillage, pour voir ce que cela produit.

  10. #10
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Redresser une page manuscrite
    Il faut isoler chaque ligne de texte dans un rectangle curviligne, dont les côtés non verticaux sont des portions de paraboles convenablement ajustées.
    Le contenu pictural sera transféré dans un rectangle de hauteur (HL) convenue, par exemple 50 ou 100 pixels, et de largeur égale à celle (La) de la zone de texte.

    1°) Circonscrire au préalable le domaine du texte par le rectangle (ABCD), de dimensions (La, Ha).

    a) Noter les ordonnées des (N + 1) points d'intersection successifs (A0, A1, ... Ak, ... AN) du côté gauche (AD) du rectangle avec les médianes séparant les extrémités gauches des lignes successives: on obtient une première suite de valeurs entières (a0, a1, ... aN).

    b) Faire de même pour les (N + 1) points d'intersection successifs (B0, B1, ... Bk, ... BN) du côté droit (BC) du rectangle avec les médianes séparant les extrémités droites des lignes successives: on obtient une seconde suite de valeurs entières (b0, b1, ... bN).

    c) Reprendre enfin le procédé pour les (N + 1) points d'intersection successifs (J0, J1, ... Jk, ... JN) de la médiane verticale du rectangle avec celles séparant les parties centrales des lignes successives: on obtient une troisième suite de valeurs entières (m0, m1, ... mN).

    C'est une démarche entièrement manuelle, mais dont l'exécution ne devrait pas présenter de difficulté sur une image agrandie.

    Nom : Repère_02.png
Affichages : 582
Taille : 210,5 Ko

    2°) Il devient alors possible d'arpenter chaque bande ainsi délimitée à l'aide de deux réels (u, v) compris entre zéro et l'unité.

    a) La première frontière parabolique (AkIkBk) correspond à (v = 0) et admet pour équation:
    y = ak + (bk - ak)*u + hk*u*(1 - u) ;
    le coefficient (hk) du dernier terme correspond à l'ordonnée centrale (u = 1/2 , y = mk) et vérifie l'équation:
    mk = (bk + ak)/2 + hk/4 .

    b) La seconde frontière parabolique (Ak+1Ik+1Bk+1) correspond à (v = 1) et admet pour équation:
    y = ak+1 + (bk+1 - ak+1)*u + hk+1*u*(1 - u) ;
    le coefficient (hk+1) du dernier terme correspond à l'ordonnée centrale (u = 1/2 , y = mk+1) et vérifie l'équation:
    mk+1 = (bk+1 + ak+1)/2 + hk+1/4 .

    c) On établit ainsi un maillage la bande envisagée par un réseau de paraboles; la localisation d'un point quelconque à l'aide de ses coordonnées curvilignes (u, v) s'effectue par les équations:
    y = a + (b - a)*u + h*u*(1 - u) ;
    a = ak*(1-v) + ak+1*v ;
    b = bk*(1-v) + bk+1*v ;
    h = hk*(1-v) + hk+1*v .

    3°) Intervient alors la synthèse de l'image transformée, circonscrite au rectangle (La, HL), réalisée au moyen d'une double boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     TYPE Rectangle = ARRAY[0..La - 1, 0..Hl - 1] OF Puxel;
     VAR Ligne: Rectangle;
     
     PROCEDURE Calc_Ligne(VAR Lg_: Rectangle);
       CONST Imax = Hl - 1; Jmax = La - 1;
       VAR i, j, Li: Word; a, b, h, p, q, r, s, u, v: Extended;
       BEGIN
         FOR i:= 0 TO Imax DO
           BEGIN
             v:= i / Imax; 
             p:= a[k]*(1-v); q:= a[k+1]*v; a:= p + q; 
             p:= b[k]*(1-v); q:= b[k+1]*v; b:= p + q;
             p:= h[k]*(1-v); q:= h[k+1]*v; h:= p + q;
             FOR j:= 0 TO Jmax DO
               BEGIN
                 u:= j / Jmax;       w:= u * (1 - u);  s:= h * w;
                 p:= a[k] * (1 - u); q:= a[k + 1] * u; r:= p + q;
                 Li:= Round(r + s); Lg_[i, j]:= Image[Li, j]     // Pixel(Ligne (Li), Colonne(j)) de l'image initiale
               END                                               // Li<>i en raison de l'inclinaison des lignes d'écriture
           END                                                   // et de leur courbure
       END;
    Ce qui est donné ici est à prendre comme du pseudo-code; il traîne peut-être quelques erreurs.

    PS: Jipété a tout à fait raison sur les objections formulées; le document en cause comporte au moins deux zones, avec des couleurs de texte et de fond différentes; et la proximité des teintes ne va rien arranger.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Bonjour, chacun et merci pour vos interventions.

    Nebulix :
    Ma prise des clichés n'est pas, et de loin, professionnelle, même si j'utilise, lorsque c'est possible, les fichiers RAW.
    Pour l'éclairage, il faut faire avec les salles de lecture des Archives dont certaines (très peu) ont des lumières étudiées pour ne pas brûler les document, ou au contraire, vieille école, ont des salles de lecture orientées au Sud, et de vastes fenêtre avec rideaux.
    Quant aux plis... On ne trouve pas de plaque de verre assez lourde pour effacer un pli sans traitement du parchemin lui-même.
    En plus il arrive que je ne puisse utiliser que mon smartphone... Oui je sais, c'est vraiment lamentable... Mais il faut faire avec, dans la mesure du possible, et prévoir un application dont la base "qualité" devra supporter le médiocre.
    Enfin, le seuillage, solution essayée avec un soft célèbre et de bonne facture... mais sans résultat probant, même en associant les divers clichés traités ou en les traitant par des fonctions mathématiques.
    Merci pour ton encouragement.

    Wiwaxia :
    Merci beaucoup pour ta participation-proposition de solution.
    Si la vectorisation ma bien traversé l'esprit, elle ne s'y est pas arrêtée, mais alors pas du tout : ce n'est vraiment pas mon domaine et le "comment faire" était hors de portée...
    Du coup, après plusieurs lectures de ton post, je crois avoir saisi la manipe.
    C'est "intelligent" et fonctionnel.
    Mais comme dit plus haut, ce n'est pas mon domaine, je vais donc me pencher sur ta proposition-solution et vais la travailler quelques heures (pas trop j'espère ) histoire d'en voir toutes les facettes.

    Jipété :
    Concernant le symbole en forme de "s", et chaque repli d'un document, il ne peut y avoir confusion avec le lettrage encrée en lui-même.
    D'une part un pli ajoute "par au dessus" au support, d’autre part, chaque caractère d’un document donné entre dans un format selon son type, format borné en taille (par exemple : un 'a' ne dépassera pas le 25x30 pixels, un 'A', sera lui compris dans un cadre de 65x100 pixels), ensuite, si jamais la confusion était encore possible, il reste la discrimination par le vocabulaire et l'autre par la main de l'homme.
    On ne peut pas faire ces traitements sans que le travail ne soit préparé, à la pièce, en aval. Mais une fois ce travail humain effectué, il peut servir à d'autres document ressemblant au modèle.
    Pour info, les caractères médiévaux, et renaissances, sont passablement différents ; On peut trouver plus de 60 signes différent, entre une abréviation, un chiffrage, les caractères de l'alphabet, selon que le texte soit d'église, notarial, ou une note en bas de page ajouter sur d'autres textes.
    Enfin, les caractères employés n'ont pas grand chose à voir avec nos polices de caractères actuelles (fin XVIII° - XXI° siècle).
    Mais la remarque était inintéressante. Merci de l'avoir soulevée.

    Je me penche donc sur l'emploi des vecteurs et donnerai mon cheminement, sur un post futur.

    Merci à vous


    PS. Sans vouloir agresser personne, voici ce que j'ai parfois dû donner à mes subordonnés, puis aux gens de mes équipes, et enfin à mes élèves (peu nombreux il est vrai, et déjà formés) :
    "L'ignorance est le propre de l'homme, elle leur permet de s'unir face à ou avec l'inconnu.
    Mais, surtout, l'ignorance n'est jamais une excuse !
    Le tribunal de Nuremberg a largement sanctionné ceux qui s'en sont servit pour pondérer leur "exploits" (dans l'idée, "ce n'est pas votre ignorance, mais votre arrogance, qui est en cause"!).
    Considérer celui qui vous fait face comme un autre soi-même est un gage de réussite humaine... La seule qui rend heureux.
    La vanité n'est pas une preuve d'intelligence, même si elle ne l'empêche pas ; Que vous pensiez "x", n'impose absolument pas aux autres de devoir le penser aussi.
    Tout comme vous, les autres ont une liberté, une autonomie et leur intelligence.
    Oui, la critique est aisée, mais l'art est difficile.
    Donc, vous vous pensez supérieur, alors allez-y ! Montrez à tous votre capacité à faire mieux que l'équipe.
    Vous avez une heure
    !"

  12. #12
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Les parchemins pliés n'aident pas, mais faisons avec.

    As tu essayé un simple top-hat pour soustraire le fond et ainsi te débarrasser des taches et autres variations de teintes ?
    Ce serait un bon début ;-)

  13. #13
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 054
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 054
    Points : 14 501
    Points
    14 501
    Par défaut
    Bonjour,
    Citation Envoyé par ToTo13 Voir le message
    un simple top-hat
    Ne connaissant pas, j'ai cherché et je vous fais part du résultat de mon enquête matinale :

    Wikipédia, avec une phrase pas claire du tout, dans le dernier § tout en bas (on dirait qu'il manque des mots) : However, if the image under nonuniform lighting, it is possible that segmentation errors might present since […]

    Des explications MathWorks pour ceux qui veulent découvrir.

    Une mise en œuvre sympathique mais ce n'est pas du Delphi.

    Un tuto clair net et précis, manque plus que le code Delphi,

    Et le meilleur pour la fin : un tuto (tout frais : fév. 2019 !) et ses filtres, pour ImageJ ; les sources sont disponibles (lien en bas de page rubrique Citation), et c'est écrit en Java, donc lisible donc traduisible en Delphi (des mois d'étude et d'essais, àmha).
    Ou alors apprendre à utiliser ImageJ.

    Au boulot,

    +++
    Citation Envoyé par Captailereve Voir le message
    Jipété :
    [...]
    Mais la remarque était inintéressante. Merci de l'avoir soulevée.

  14. #14
    Membre régulier
    Homme Profil pro
    Applis analyse d'image
    Inscrit en
    Juin 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Applis analyse d'image

    Informations forums :
    Inscription : Juin 2009
    Messages : 73
    Points : 92
    Points
    92
    Par défaut manuscrit
    Bonjour,

    mais oui Toto13, voici un petit extrait d'une image après tophat.
    Images attachées Images attachées  

  15. #15
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 054
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 054
    Points : 14 501
    Points
    14 501
    Par défaut
    Bonjour, bravo, très bien,
    Citation Envoyé par charlinou Voir le message
    voici un petit extrait d'une image après tophat.
    mais, tu pourrais nous en dire plus ? Il sort d'où, ton top-hat ? Tombé du ciel ? Dans un sous-menu caché au fond d'un logiciel ésotérique ? Etc.

    Il semblerait qu'il s'agisse du document "regroupe 27-06", lignes 6 à 11 ; est-ce que les autres lignes sont aussi bonnes ?

    Merci pour les retours.

  16. #16
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 455
    Points
    1 455
    Par défaut
    L'information de base est binaire : un "pixel" de manuscrit est vierge ou recouvert d'encre. L'opération pour arriver à ce résultat est un seuillage. L'exemple de Toto montre que çà marche sur une surface restreinte. Une mosaïque de sous images seuillées de manière appropriée devrait donner un bon résultat. As-tu le temps de le faire à la main ?

  17. #17
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 054
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 054
    Points : 14 501
    Points
    14 501
    Par défaut
    Citation Envoyé par Nebulix Voir le message
    L'information de base est binaire : un "pixel" de manuscrit est vierge ou recouvert d'encre.
    Bah nan.
    Si c'était aussi simple on ne serait pas là pour en parler : un "pixel" de manuscrit est vierge si le support est vierge, ou recouvert d'encre d'information "textuelle" ou d'information graphique mais textuelle quand même (enluminures, lettrines ornées, majuscules fantaisistes), ou de cochonneries.

    Dans les plus grands délires de l'écriture de chancellerie, tu avais des majuscules dont un trait de plume partait de la lettre et dessinait plein d'arabesques en faisant le tour du paragraphe, un vrai truc de malade qui aurait chargé en acide, . Exemples ici et .

    Là on est plus irl,

  18. #18
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 455
    Points
    1 455
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Bah nan.
    Si c'était aussi simple on ne serait pas là pour en parler : un "pixel" de manuscrit est vierge si le support est vierge, ou recouvert d'encre d'information "textuelle" ou d'information graphique mais textuelle quand même (enluminures, lettrines ornées, majuscules fantaisistes), ou de cochonneries.

    Dans les plus grands délires de l'écriture de chancellerie, tu avais des majuscules dont un trait de plume partait de la lettre et dessinait plein d'arabesques en faisant le tour du paragraphe, un vrai truc de malade qui aurait chargé en acide, . Exemples ici et .

    Là on est plus irl,
    Non. La première étape est de déparer les zones où la plume a laissé une trace et les autres. Après on essaie de séparer ce qui a un sens et ce qui relève de la décoration.

  19. #19
    Membre régulier
    Homme Profil pro
    Applis analyse d'image
    Inscrit en
    Juin 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Applis analyse d'image

    Informations forums :
    Inscription : Juin 2009
    Messages : 73
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Bonjour, bravo, très bien,


    mais, tu pourrais nous en dire plus ? Il sort d'où, ton top-hat ? Tombé du ciel ? Dans un sous-menu caché au fond d'un logiciel ésotérique ? Etc.

    Il semblerait qu'il s'agisse du document "regroupe 27-06", lignes 6 à 11 ; est-ce que les autres lignes sont aussi bonnes ?

    Merci pour les retours.
    J'avoue ne pas bien comprendre les questions et, surtout, leur ton puisque mon objectif est de montrer que le top hat semble un outil interressant dans ton cas. Peu importe le logiciel utilisé du moment que j'ai pu faire un top hat et que tu en connais le principe. Je précise simplement que mon envoi est le résultat du seuillage final que j'ai multiplié par 255 pour pouvoir le sauvegarder selon un format générique. Cela dit le logiciel en question s'appelle Visilog, produit commercial français dont le devellopement et la mise en vente sont arrêtées depuis peu, cela veut simplement dire que je n'ai pas réinventé le top hat, je me suis contenté de le comprendre le mieux possible. En revanche ce que je ferais si j'étais concerné par ta question, serait de chercher à en automatiser le paramétrage pour le rendre applicable au maximum de cas, ce qu'ici j'ai fait à la main et au feeling en quelques secondes à partir de l'image qui m'a paru la plus facile à traiter.
    Oui, toute l'image est de cette qualité, je n'ai pas voulu envoyer une image si lourde.

  20. #20
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 054
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 054
    Points : 14 501
    Points
    14 501
    Par défaut
    Citation Envoyé par charlinou Voir le message
    J'avoue ne pas bien comprendre les questions et, surtout, leur ton puisque mon objectif est de montrer que le top hat semble un outil intéressant dans ton cas.
    Hopopop, ce n'est pas mon sujet, juste que je suis curieux et quand je vois passer des choses qui me semblent intéressantes et que je ne connais pas, je pose mes questions, en espérant que les réponses serviront à tous.
    Bon, c'est sûr que si tout le monde ici connaissait déjà le top-hat, je passe pour le dernier des imbéciles, mais peu me chaut : on ne peut pas tout connaître, il n'y a pas de honte à poser une question et je l'ai bien dit dans ma réponse précédente, "Ne connaissant pas… "

    J'ai simplement pensé que mes trouvailles intéresseraient l'OP (et les lecteurs anonymes) car, s'il connaissait, il n'aurait pas ouvert cette discussion.

    Citation Envoyé par charlinou Voir le message
    En revanche ce que je ferais si j'étais concerné par ta question, serait de chercher à en automatiser le paramétrage pour le rendre applicable au maximum de cas, ce qu'ici j'ai fait à la main et au feeling en quelques secondes à partir de l'image qui m'a paru la plus facile à traiter.
    Moui, et c'est bien là que le bât va blesser, automatiser tout ça...

    Citation Envoyé par charlinou Voir le message
    Oui, toute l'image est de cette qualité, je n'ai pas voulu envoyer une image si lourde.
    OK merci.

Discussions similaires

  1. [Débutant] Redressement de l'image d'une page de livre
    Par openma0906 dans le forum Images
    Réponses: 0
    Dernier message: 19/02/2014, 22h48
  2. |VB6] [Réseau] Lancer une page ASP
    Par Delphi-ne dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 18/10/2002, 17h10
  3. comment integer une animation swf dans une page
    Par naili dans le forum Intégration
    Réponses: 7
    Dernier message: 18/09/2002, 19h54
  4. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 09h37
  5. [CR] Avoir seulement une page blanche qd la base est vide???
    Par littleChick dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 13/08/2002, 19h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo