SVPComment je pourrai prendre le top et le Bottom de l'image (de même à gauche et à droite) afin de récupérer les pixels au milieu, et supprimer les espaces ?
SVPComment je pourrai prendre le top et le Bottom de l'image (de même à gauche et à droite) afin de récupérer les pixels au milieu, et supprimer les espaces ?
les problème avec mon code c'est que chaque sous-image doit pouvoir être contenue seule dans un rectangle.
sinon on peut se retrouver avec ça:
des morceaux les uns dans les autres.
La méthode que j'avais évoquée ne convient pas vu les hypothèses données. Je mets simplement l'image pour ceux qui n'auraient pas fait le lien entre la ligne moyenne et l'image sur laquelle elle est calculée.
Ici, le lien entre les deux saute aux yeux :
EDIT
sur fond rose pour mieux y voir les marges :
en haut : la ligne moyenne sous forme de graphique
au milieu : la ligne moyenne mode 'L' que j'ai répétée sur 30 lignes pour y voir quelquechose
en bas : l'image origine
les trois calés entre eux en x/colonnes
tu veux dire détecter les parties très hautes (radiométries élevées, les marges) et les autres (images origine) ?Envoyé par josmiley
heuuu ....
genre on fait un masque 1/0 de l'image, on cherche un 1 et tous ses voisins comme dans un démineur, ça fait des groupes genre sous-masques qu'on fait ensuite correspondre à l'image d'origine ... ?
sinon, un essai avec pygame, avec cette image qui contient du bruit
on voit que le code parvient à séparer les éléments.
par contre il faut modifier aire_mini pour ne pas perdre des morceaux d'images.
ce n'est pas parfait.
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 aire_mini = 10 marge = 10 from pygame import * clk = time.Clock() img = image.load('icondesign10.jpg') col = img.get_at((0,0)) w,h = img.get_size() scr = display.set_mode((w,h)) scr.fill(col) msk = mask.from_threshold(img,col,(marge,marge,marge,marge)) msk.invert() mks = msk.connected_components(aire_mini);print(len(mks),"elements") for m in mks: [scr.set_at((x,y),img.get_at((x,y))) for x in range(w) for y in range(h) if m.get_at((x,y))] display.flip() clk.tick(2) while event.wait().type != QUIT: pass
Partager