Bonjour,
je souhaiterai faire roter un ES de type strel
C'est possible via rot90, mais ca limite les angles de rotation.
Je vais le coder, mais peut etre y as t il une facon direct de le faire ...
ImagingAll
Bonjour,
je souhaiterai faire roter un ES de type strel
C'est possible via rot90, mais ca limite les angles de rotation.
Je vais le coder, mais peut etre y as t il une facon direct de le faire ...
ImagingAll
Bonjour,
quel element structurant précisément?
Pour une bonne utilisation des balises code c'est ici!
Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources
La nature est un livre écrit en langage mathématique. Galilée.
un element type rectangle ...
Pour faire une ouverture par des segments de droite d'épaisseur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part b1 = strel('line',50,2);
ImagingAll
Bonjour;
Tu peux par exemple utiliser imrotate :
Code : Sélectionner tout - Visualiser dans une fenêtre à part >> doc imrotate
Les règles Les cours La fonction rechercher
N'oubliez pas de mettre en et de voter.
La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !
Un exemple :
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 function se = strel2(len,wid,deg) if nargin==0 len = 12; wid = 4; deg = 45; end nhood = ones(wid,len); nhood = imrotate(nhood,deg); nhood = logical(nhood); se = strel('arbitrary', nhood);
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Merci Dut,
Ca donne ca avec une tite fonction, mais c'est un peu lourd en calcul...
Bonne journée,
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
22
23
24 function [IMGout] = RadialOpenrect_SA(IMG,len,wid,step,affichages) % INPUT % [IMGout] = RadialOpenrect_SA(IMG,len,wid,step,affichages) % affichages: show image result if ==1 IMGout=im2uint8(zeros(size(IMG))); for x=0:step:180 deg = x; nhood = ones(wid,len); nhood = imrotate(nhood,deg); nhood = logical(nhood); se = strel('arbitrary', nhood); radialopen=imopen(IMG,se); RadialopeningIMG=max(im2uint8(IMGout),im2uint8(radialopen)); end if (affichages==1) figure, imshow(RadialopeningIMG); else end end
ImagingAll
Dans un premier temps, la boucle devrait pouvoir se simplifier ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 nhood = ones(wid,len); nhood = logical(nhood); n = round(180/step); deg = linspace(0,180,n); for k = 1:n nhoodk = imrotate(nhood,deg(n),'nearest'); se = strel('arbitrary', nhoodk); radialopen = imopen(IMG,se); RadialopeningIMG = max(im2uint8(IMGout),im2uint8(radialopen)); end
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
oui c'est un peu plus rapide et sans cette coquille:
deg(n)->deg(k)
Ca donnne ca:
ImagingAll
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 nhood = ones(wid,len); nhood = logical(nhood); n = round(180/step); deg = linspace(0,180,n); for k = 1:n nhoodk = imrotate(nhood,deg(k),'nearest'); se = strel('arbitrary', nhoodk); radialopen = imopen(IMG,se); RadialopeningIMG = max(im2uint8(IMGout),im2uint8(radialopen)); end if (affichages==1) figure, imshow(RadialopeningIMG); else end
L'autre solution consiste à pré-calculer les éléments structurants (si possible) et à les stocker sous forme d'un tableau de cellules dans un fichier mat qui serait appelé en début de fonction (comme une sorte d'abaque).
Cela économiserait les fonction IMROTATE et STREL dans la boucle FOR-END
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Avec les images en niveau de gris ... c'est super long.
Alors je nettoie.
ImagingAll
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager