img_cut3

Programmation d'applications complexes
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: img_cut3

Message par Zorro »

Marc56 a écrit :Merci pour les explications sur l'algo: simple, efficace.

Tu es même en train de faire la base d'un logiciel d'OCR en une poignée de lignes: Isoler les formes, il ne reste plus ensuite qu'à comparer chaque forme à un masque et selon le pourcentage de correspondance, on a la lettre.

:)
ben ça doit etre quand meme un peut chaud a faire :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: img_cut3

Message par Marc56 »

J'avais vu le principe dans une BD de vulgarisation sur Internet (document perdu)

Tu stockes toutes les lettres de l'alphabet en fichiers images négatives (blanc sur noir)
(Dans un premier temps, prend des lettres majuscules)

Sur ton image à OCRiser
Tu isoles une lettre (avec ton système) que tu sauve en blanc sur noir

Tu prends ses dimensions maxi, largeur et hauteur
Tu mets l'image isolée à la même taille que tes lettres de référence.

Puis en boucle
Tu superposes chaque image négative à l'image positive
Plus l'image est totalement noire, plus la correspondance est possible

Je ne sais pas si j'explique bien ? :? mais c'est le principe. 8)
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: img_cut3

Message par Shadow »

C'est mieux avec les progressbar :)
Cependant ne fonctionne pas encore à 100% avec certaine image !
Voici l'image, compare l'originale avec la découpe tu verras:
http://www.aht.li/2935210/Test.png

Tu verras que les bord de la découpe son vraiment pas bonne du tout.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: img_cut3

Message par Zorro »

ok je regarde demain :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: img_cut3

Message par Zorro »

j'ai remodifié le code Page 1

j'ai ajouté une case "Mode H/V"
ça concerne la selection soit par defaut l'image est scanné de haut en bas
soit si c'est coché, de gauche a droite .... ça depanne pour certains type d'images !
et j'ai corrigé un petit bug a propos de la selection de couleur de fond


@Shadow :

ton image est deja tres particuliere, car tu as "bluré" les bords de tes iles
donc la selection a du mal avec ce genre d'image ... mais en principe avec la derniere version du code
on y arrive tres bien , par contre ça demande une manipulation suplémentaire (que j'ai deja expliqué ici )

tu charges ton image
tu effectues plusieurs decoupe (en cliquant plusieurs fois sur le bouton "decoupe"
jusqu'a ce qu'il n'y ait plus d'ile Verte dans l'image central de mon prg


avec ton exemple de 5 iles , tu va te retrouver avec 3 images

Sprite1 qui aura 3 iles
Sprite 2 qui aura bien 1 ile
Sprite 3 qui aura bien 1 ile

il te faut alors recharger Sprite 1 (qui contient encore 3 iles )
dans le prg , puis effectuer a nouveau des découpes jusqu’à ce qu'il n'y ait plus d'iles verte
et voila tu aura toujours Sprite1 qui contient 3 iles, mais ce fichier tu l'effaces puisqu'il ne sert plus ..
dans le lot, il est possible que tu te retrouve avec un Sprite tout noir vide ! , tu l'effaces, pas d'interet

mais au finale, tu aura bien tes 5 iles séparées !!
Dernière modification par Zorro le lun. 15/août/2016 12:10, modifié 1 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: img_cut3

Message par JohnJohnsonSHERMAN »

Un logiciel d'OCR en PB ce serait dingue ca ! J'y avais pensé il y a un certain temps mais n'ayant pas les connaissances nécessaires, je n'ai jamais commencé ce genre de projet :roll: Si Dobro nous en fait un, chapeau ! 8)
En tout cas c'est déja trés bien dans l'état actuel, j'aime bien :P
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: img_cut3

Message par Zorro »

j'ai remodifié le code , maintenant en debut de code vous avez ces lignes

Code : Tout sélectionner

; **** a mettre en commentaire au deuxieme lancement ****
; if CreateImage(#image_text,800,600,32,rgb(255,255,255) ) ;
; 		StartDrawing(ImageOutput(#image_text))
; 				DrawingMode(#PB_2DDrawing_Default  )
; 						DrawText(1,1,text.s,$0,rgb(255,255,255))
; 		StopDrawing()
; 
; 		SaveImage(#image_text,"image_text.png",#PB_ImagePlugin_PNG)
; 		Else
; 		MessageRequester("erreur","creation image texte impossible")
; Endif
; End



; ***************************************************
dé-commentez les pour un seul lancement !

ça va creer une image "image_text.png" a coté du prg "Img_cut3"
vous pouvez recommentez les lignes ... ou les virer du code

cette image crée contient du text
une phrase = "il etait une bergere, et ri et ron , petit patapon"
pour decouper cette image et ainsi isoler les caracteres , il faut cocher la case "Mode H/V"
le scan se fera verticalement, donc de gauche a droite

en mettant 20 dans le compteur de decoupe , vous verrez les caracteres se faire isoler ...

plus qu'a faire l'algo de comparaison :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: img_cut3

Message par Shadow »

Super dobro, oui ça marche bien là :D
Par contre c'est bizarre qu'il découpe les 3 map ensemble :?
Et sinon, marche pas avec cette image :(
http://www.aht.li/2933319/Map_1_Multie_direction.png
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: img_cut3

Message par Zorro »

alors, comme tu commences a bien me gonfler avec tes iles verte type Tchernobyl :mrgreen:

j'ai decidé d'ajouter un mode "manuel" :)

facile a utiliser, et bien pratique sur des planches de sprites , ça permet de choisir ceux qu'on veux

tu charges ton image rempli d'iles

tu choisis une couleur de fond (ou pas , par defaut c'est le pixel 1,1 qui est pris
tu cliques sur le nouveau bouton [sel_man] , il reste enfoncé c'est normal
il attends que tu cliques en plein millieu du sprite que tu veux decouper !!
une fois fait, ça decoupe et sauve le morceau d'image !

plus simple a utiliser tu meurs ... (ouaip ...enfin , déconnes pas quand meme , je ne voudrais pas aussi avoir ça sur le dos :mrgreen: )

sinon tout le reste c'est comme avant !
en utilisation Automatique il suffit de cliquer sur Decoupe, et ça se debrouille (avec des images de sprites standards )
avec les images a Shadow le mode manuel indispensable

pas trop compris pourquoi ça echoue en mode automatique sur tes images, je pense a
des pixels parasites , qui font croire a la selection, qu'on est sur le debut d'un sprite, alors qu'il n'en est rien
la selection ne se faisant pas (pas de passage en rouge ), la decoupe ne peut donc pas se faire non plus !

enfin, avec le mode manuel, c'est passe partout ! :)
exemple d'utilisation en video :
https://youtu.be/-DtjJgaOV2Q
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: img_cut3

Message par Shadow »

Non pas de pixel parasite sur mon image dobro c'est ton prg qui bug :(
J'ai bien regarder l'image et aucun pixel parasite d'après moi !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: img_cut3

Message par Zorro »

Shadow a écrit :Non pas de pixel parasite sur mon image dobro c'est ton prg qui bug :(
ben non !! c'etait pas mon prg le fond du probleme !!


bon j'ai refait le code , en y ajoutant une selection manuel !!
on peut comme sur la Video posté hier, apres avoir selectionné le mode manuel avec le bouton

choisir sur l'image qu'elle "sprite" ont veux decouper ! :)

@Shadow :

l'une de tes images d'hier (l'avant derniere posté... celle qui a 5 iles) a une particularité !
effectivement il ne s'agit pas de pixels parasites mais d'inversion de couche !!

d'ailleurs avec la nouvelle version de mon prg ça se voit !

puisqu'il faut deja sélectionner a la main une ile ,mais en fait toutes les iles seront sélectionnées puisque les iles sont en fait , le fond de l'image , et ce qu'on croit etre le fond, est en fait l'image !!
je pense que ça proviens d'un problème de sauvegarde (format Png ?? ) de ton logiciel
incompatible avec Pb ?? en tout cas, c'est la première fois que je vois ça ...

ce qui fait qu'a la première sauvegarde , tu aura ton image remise a l'endroit , la sauvegarde effectuée par mon prg
aura remis les choses a l'endroit ! , l'image (le resultat ) sera donc "découpable" !
il te suffira alors de re-selectionner ce résultat, pour pouvoir faire une découpe normale (automatique ou manuel )

quand a ta dernière image (celle ou toutes les iles sont les une au dessus des autres en colonne
il te suffit de sélectionner en manuel, l'ile que tu veux découper (ou toute les iles , les une apres les autre )
oublie le mode automatique , avec tes images, ça ne le fera pas ....

cependant , vu le format de tes découpes , il te faudra un peu attendre,le temps que ça se fasse .. mais tout marche
je me suis servi de tes images pour tester mon code (a ce propos merci, ça m'a permis de l’améliorer )


pour la sélection Manuel , cliquer d'abord sur le bouton pour activer le mode
puis cliquez en plein milieu du Sprite que vous voulez découper ! :)

pour le mode Automatique, il suffit de choisir une couleur de fond
et de cliquer sur "Découpe"
la coche H/V , permet de découper de Haut en bas par défaut , ou de gauche a droite en mode coché

revoici la video du mode Manuel
https://youtu.be/-DtjJgaOV2Q
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

Re: img_cut3

Message par Bernie »

Salut Zorro

j'ai fait le test avec l'image de Shadow je découpe en regardant ta vidéo une ile avec ton logiciel :

http://img4.hostingpics.net/pics/605291sprite1.png


et après quand on la charge dans un logiciel de dessin j'utilise PhotofiltreStudioX :

http://img4.hostingpics.net/pics/233690Sanstitre1.jpg

Je vois pas de pixel parasite .
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: img_cut3

Message par Zorro »

Zorro a écrit : l'une de tes images d'hier (l'avant derniere posté... celle qui a 5 iles) a une particularité !
effectivement il ne s'agit pas de pixels parasites mais d'inversion de couche !!

faudrai lire avant de répondre ;)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: img_cut3

Message par Shadow »

J'ai tester, beau travail dobro !
Alors pour l'inversion... je ne sais pas se que ça veux dire...

Avec mon image 5 ile type Tchernobyl :mrgreen:
ça marche pas ont est ok, mais avec ta nouvelle méthode ou je fais comme tu m'as dit, ça marche !
Avec la nouvelle image.

Avec l'image au 4 iles, par contre marche pas là...
Il faut que je corrige se problème d'inversion de je sais pas quoi...

Essais de m'en dire d'avantage.
Je fais mes Map avec Gimp.

Et pas de quoi pour les Map merci à toi.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: img_cut3

Message par Zorro »

Shadow a écrit : Avec l'image au 4 iles, par contre marche pas là....

l'image ou les iles sont vertical n'ont pas de problemes d'invertion
mais tu dois obligatoirement passer par la Selection a la main
chez moi ça marche !

en utilisant le bouton "Sel_man " , tu clique en plein milieu d'une ile

tu attends un peu, elle deviens rouge, ok elle est selectionnée , la decoupe va se faire toute seule
lorsque l'ile apparaitra noire ou blanche, alors tu peut recommencer a selectionner une autre ile ( a la main !! )
le mode automatique refuse de fonctionner sur tes images , et je sais pas pourquoi !!

par contre l'image des 5 iles , elle a une couche inversé !!
celle-la : http://www.aht.li/2935210/Test.png

c'est evident lorsqu'on la charge dans le prg , tu te met de façon a voir plusieurs iles
et en mode Manuel , tu sélectionnes l'une d'entre elles ....
probleme elles deviennent toutes rouge , les 5 deviennent rouge
ça , c'est pas net !! parceque ma selection est basé sur FillArea()
hors, FillAREA NE PEUT PAS REMPLIR plusieurs forme si elles sont séparé par une couleur !!

pourtant sur tes images, le FillArea() arrive a colorer toutes les iles !!
c'est donc qu'elles sont en fait toutes dessinées sur le meme plan, et que leur semblant de séparation
n'en est pas !! , la séparation serai en faite une couche par dessus

du coup le FillAREA() au lieu de s'arreter la ou est le "fond d'ecran" , il ne s’arrête pas , forcement, il n'y a pas de fond d'ecran
en fait le fond d'ecran semble etre tes iles !!

ton image,
c'est comme si nous avions un fond Vert et que par dessus, on avait ajouté des masques marron et Gris en laissant des trous pour qu'on voit le vert !!
alors on a l'impression que des iles sont dessinées , alors qu'en fait , on a dessiné des trous !!


lorsque je cherche a remplir ces trous, c'est en fait tout le fond de l'image qui se rempli (la partie verte qui est sous le masque )
voila pourquoi ma selection basé sur la fonction FillArea() ne fonctionne pas sur tes images !

c'est louche, mais c'est ce qui semble se passer !
d'ailleurs tu devrai soumettre ton image a Fred, histoire d'etre sur que la fonction FillArea , ne serai pas buggé par hasard ...
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Répondre