Bonjour à tous,
débutant en Matlab, je cherche à redimensionner une image d'une manière bien spécifique et j'arrive à un résultat qui n'est guère satisfaisant.
Voici ce que je souhaite faire:
Je dispose d'une image dont je ne connais pas à l'avance les dimensions. Je veux la redimensionner pour qu'elle fasse précisément 1200*2200 pixels. L'image initiale peut donc être plus grande ou plus petite en largeur et/ou en longueur.
Mais je ne veux ni agrandir ni réduire les pixels de mon image initiale, le redimensionnement doit se faire par ajout de bandes noires ou suppression de bandes de manière proportionnelle haut/bas et gauche/droite (c'est à dire que le centre de l'image initiale reste le centre après traitement).
Je n'ai pas trouvé de fonction pour cela, j'ai démarré un truc, mais c'est pénible suivant les cas où les dimensions sont paires ou impaires :
Quels conseils pourriez vous me donner pour améliorer ce code ?
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 % g est l'image initiale à traiter t1=1200; %largeur à appliquer t2=2200; %longueur à appliquer s1=size(g(:,1)); s2=size(g(1,:)); L1=abs((s1(1)-t1))/2; L2=abs((s2(2)-t2))/2; if s1(1)==t1 break elseif s1(1)>t1 g=g((L1+1):(s1(1)-L1),:); else g=[zeros(L1,s2(2));g;zeros(L1,s2(2))]; end if s2(2)==t2 break elseif s2(2)>t2 g=g(:,(L2+1):(s2(2)-L2)); else g=[zeros(L2,s1(1))' g zeros(L2,s1(1))']; end
Merci pour votre aide
Partager