Traitement des images. Transformation bilinéale. [Matlab]

Brayan Buitrago
Brayan Buitrago

Suivez

30 août 2019 · 9 min Lire

La vision est la sensation de laquelle nous obtenons les plus grandes informations sur notre environnement . L’interprétation de notre cerveau, basée sur les informations qu’il reçoit des yeux, est fortement influencée par l’expérience; Cela conduit parfois à faire des erreurs d’appréciation. Tout au long de votre vie, et surtout les plus anciens âges, une personne classée, généralisée et caractérise les éléments de votre environnement pour prendre des décisions rapidement. Les personnes qui ont des défauts dans leur sens de vue peuvent corriger ou réduire les défauts de cela au moyen de lentilles, cela est possible si nous parlons de problèmes d’approche, par exemple. Avec le développement de l’acquisition d’images via des outils technologiques, la nécessité de corriger ces images est également apparue pour que son interprétation ultérieure soit vraie. Si un périphérique d’acquisition d’images fournit des images avec des défauts de focalisation, cette carence peut être corrigée en ajoutant des lentilles à l’appareil. Le point de vue est un aspect important lors de l’interprétation d’une image, le fondement de cet aspect est dans l’expérience, car c’est ainsi que nous apprenons à estimer les mesures, les positions, les vitesses, etc. Une interprétation précise de l’image obtenue peut être obtenue si les caractéristiques de l’objet contenues sont connues par l’individu qui l’analyse. Il y a l’importance des proportions de l’image, en ce qui concerne la réalité, sont congruentes. Nous utilisons également la perspective pour suggérer une idée à un individu ou la persuader, et nous trouvons courage lorsqu’il s’agit de modifier les proportions des éléments d’une image. Lorsque l’image acquise ne correspond pas à ce que nous voulons visualiser, nous pouvons faire une modification de l’image de manière à ce qu’elle soit plus pratique.

modifier une image, coordonner les transformations des pixels et des modifications de la luminosité de l’image, celle – ci est obtenue avec des techniques d’interpolation de luminance. Changer les proportions de l’image peut être comprise avec une action analogue: si nous avons une surface de glace et développons cette surface avec de la chaleur, nous obtiendrons une surface de vapeur et il y aura des régions vides sur ladite surface. Le même effet se produit dans les images et de compenser ce défaut, des techniques d’interpolation sont utilisées; Avec ces techniques, nous supposons des valeurs pour vider des endroits afin que l’image soit appréciée uniforme, ceci est lié à la résolution de l’image. La manière dont nous affectons la géométrie de l’image est basée sur des techniques de transformation géométrique. Si nous voulons déplacer l’image, changez de proportions de base et de hauteur, faites-la pivoter ou glisser, nous pouvons effectuer la transformation linéaire associée. Si vous souhaitez modifier la géométrie de l’image sans préserver le parallélisme entre les lignes opposées du contour de l’image, nous pouvons utiliser une transformation bilinéale ou une transformation en perspective. Cette transformation utilise 4 points de référence et de 4 points de transformation pour définir la fonction de transformation.

1. La différence entre l’ image transformation liés, bilinéaire et perspective.

image 2. image avec grille 4×4.

l’objectif de cette pratique est de modifier une image en hauteur « et » et la base « X ». l’image sera modifiée à partir de deux points de l’image. pour formuler le problème et décrire la solution proposée, une image par exemple sera utilisé. il souhaite modifier l’image 2, pour ce pixel marqué d’un « X » rouge est sélectionné et la position on désire prendre avec un « ou » ROJ une, pour ce cas. Le point de référence « X » aura les coordonnées (PRX (1), PRY (1)). Le point de référence « ou » aura les coordonnées (PRX (2), PRY (2)). Le premier élément de la nomenclature précédente correspond à la position sur l’axe horizontal et le deuxième élément correspond à la position sur l’axe vertical. Il convient de prendre en compte que pour localiser ces points, le point de référence est dans le coin supérieur gauche de l’image.

La transformation linéaire sera utilisée pour modifier une image basée sur la sélection de deux pixels de l’image. Premièrement, le pixel « 1 » est sélectionné et ensuite le pixel « 2 ».L’image va changer en ce qui concerne ces deux points de référence; Vous souhaitez déplacer le pixel « 1 » à la position de pixels « 2 », l’ensemble de l’image doit changer pour accueillir ce nouveau point de référence. Division de l’image dans 16 cellules égales (4×4), la solution est que chaque cellule passe à une forme spécifique et à toutes ces nouvelles formes peut être unie pour obtenir une nouvelle image des mêmes dimensions de l’original. Le peut être obtenu ci – dessus en utilisant la transformation bilinéaire appliqué à chaque cellule.

La solution proposée est conçue pour des images formées par une seule matrice, de sorte que cette transformation ne peut pas être appliqué à des images en format RGB par exemple.

Développement d’exercice.

à l’image 2 est superposé à un maillage bleu, qui doit changer en ce qui concerne la transformation souhaitée. Ce maillage a 3 lignes verticales et 3 lignes horizontales. La solution au problème d’ origine est une solution générale, de sorte que l’exemple image est utilisée à certains moments de la description afin que l’explication est plus claire.

image 3. A. PIXEL POSITION « 1 » B. PIXEL POSITION « 2 ».

La première chose qui est fait est la localisation des lignes de la référence ci-dessus, vers le bas, à droite et à gauche du point « x ». Ce sont les lignes plus courtes du point « x » aux extrémités de l’image, comme on le voit dans l’image 3.A. Les coordonnées du point « X » sont (PRX (1), PRY (1)).

Après avoir localisé les lignes de référence, les points de coupure de chaque ligne de la maille avec ces lignes de référence. il est possible que les lignes de référence ont des points coupés avec trois, deux, un ou pas de ligne de maille. Voici les points d’intersection pour ce cas dans l’ image 4.

image 4. intersection Grille avec les lignes de référence.

sont dessinées quatre lignes de référence nouveau pour représenter graphiquement le nouveau maillage. le point où vous rejoignez ce 4 nouvelles lignes est le point « ou » dont les coordonnées sont (PRX (2) LEVIER (2)). ainsi , la partie de la ligne jaune du point (PRX (2) LEVIER (2)) à Le point (PRX (1), 1) Le 1 correspond à la première rangée de pixel de l’image, la partie de la ligne bleue de la PU NTO (PRX (2), PRY (2)) au point (X, PRY (1)) Les X correspond à la dernière colonne de pixels de l’image, la partie de la ligne rouge du point (PRX (2), PRY (2 )) pour le point (1, PRY (1)) , les 1 correspond à la première colonne de pixels de l’image et la partie de la ligne verte du point (PRX (2), PRRY (2)) au point (PRX (1) , y) et la colonne correspond à la dernière rangée de pixels de l’image, comme montré dans l’ image 5.

image 5. de nouvelles lignes de référence connecté au point « O ».

Si vous regardez, l’emplacement des points d’intersection, la figure 3, doit changer à mesure de changer la ligne sur laquelle ils sont situés. Après avoir trouvé le rapport avec lequel ils les changent et les localisons dans leur nouvelle position, nous obtenons le résultat suivant: Image 6.

image 6. intersection les points sur les nouvelles lignes.

sur le bord de l’ image 6 points où les lignes qui composent le maillage sont placés à partir de ces indicateurs et les nouveaux points d’intersection est tracé le nouveau maillage. Dans l’ image 7 , vous pouvez le voir.

image 7. identification Nouveau Mesh.

Les valeurs qui comptent sur l’image 7 sont celles indiquant les points d’intersection des lignes discontinues.

« 61633d9547 »>

« f13e23d8c7 »>

Image 8. Sketch nouveau maillage.

Uniting Ces points d’intersection peuvent graver le nouveau maillage. Le nouveau maillage est utilisé pour référence visuelle, car pour faire la transformation bilinéaire nous avons seulement besoin des points d’intersection.

l’ image 9. identification point le nouveau maillage.

L’identification de l’intersection des points se fait avec les équations droites, simplement le croisement des lignes qui génèrent les points d’intérêt sont calculés.

Maintenant que les nouveaux points de la maille sont connus, nous pouvons effectuer la transformation bilinéale de chaque cellule. Exécution de la transformation de la cellule où la plus grande partie du visage Lena se trouve, le processus de transformation peut être expliquée.

l’ image 10. Le téléphone mobile avec Face à Lena. la transformation est réalisée dans une région rectangulaire

contenant la nouvelle région, qui est une région rectangulaire dans laquelle la région est contenu délimité par k5, k8, k9 et k6. Prendre comme entrée les points qui encadrent chaque cellule et les nouveaux points que nous effectuons la transformation bilinéale. Après la transformation , on obtient l’image 11 pour la cellule.

image 11. Bilineally cellule transformée.

Si nous faisons la transformation de toutes les cellules et les régions obtenues surimposons le résultat de l’image 12.

image 12. cellules Bilineally transformées et superposées .

Pour éviter le chevauchement des régions, comme nous le voyons dans l’ image 12, il faut couper les régions avant de les superposant chacun. Si on coupe la cellule d’image 11 avec le contour K5, K8, K9 et K6 de l’image 9 Nous obtenons le résultat de l’image 13.

image 13. cellule recadrée.

Après la coupe et superposant les régions coupées, le résultat de l’image est obtenue.

Image 14. Image Transformé.

je laissais les bords des régions à chevauchement observer comment le maillage est affecté.

Résultat des différents points.

Image 15. Résultat de plusieurs transformations ciones.

Code Matlab

Avec le code suivant, vous pouvez mettre à l’étape par transformation de l’étape. Bien sûr, vous pouvez l’optimiser.

clc; clear all; close all;im=imread(‘LenaMonoColor.bmp’);
=size(im);
a=round(x/4); %horizontal
b=round(y/4); %vertical
figure;imshow(im);
% =ginput(2);
% hold on;for k=0:5;
line(,);
line(,);
endim1=uint8(zeros(size(im)));
im2=uint8(zeros(size(im)));
im3=uint8(zeros(size(im)));
im4=uint8(zeros(size(im)));
im5=uint8(zeros(size(im)));
im6=uint8(zeros(size(im)));
im7=uint8(zeros(size(im)));
im8=uint8(zeros(size(im)));
im9=uint8(zeros(size(im)));
im10=uint8(zeros(size(im)));
im11=uint8(zeros(size(im)));
im12=uint8(zeros(size(im)));
im13=uint8(zeros(size(im)));
im14=uint8(zeros(size(im)));
im15=uint8(zeros(size(im)));
im16=uint8(zeros(size(im)));for xp=1:b;
for yp=1:a;
im1(xp,yp)=im(xp,yp);
end
end
for xp=1:b;
for yp=a:a*2;
im2(xp,yp)=im(xp,yp);
end
end
for xp=1:b;
for yp=2*a:3*a;
im3(xp,yp)=im(xp,yp);
end
end
for xp=1:b;
for yp=3*a:4*a;
im4(xp,yp)=im(xp,yp);
end
end
for xp=b:2*b;
for yp=1:a;
im5(xp,yp)=im(xp,yp);
end
end
for xp=b:2*b;
for yp=a:2*a;
im6(xp,yp)=im(xp,yp);
end
end
for xp=b:2*b;
for yp=2*a:3*a;
im7(xp,yp)=im(xp,yp);
end
end
for xp=b:2*b;
for yp=3*a:4*a;
im8(xp,yp)=im(xp,yp);
end
end
for xp=2*b:3*b;
for yp=1:a;
im9(xp,yp)=im(xp,yp);
end
end
for xp=2*b:3*b;
for yp=a:2*a;
im10(xp,yp)=im(xp,yp);
end
end
for xp=2*b:3*b;
for yp=2*a:3*a;
im11(xp,yp)=im(xp,yp);
end
end
for xp=2*b:3*b;
for yp=3*a:4*a;
im12(xp,yp)=im(xp,yp);
end
end
for xp=3*b:4*b;
for yp=1:a;
im13(xp,yp)=im(xp,yp);
end
end
for xp=3*b:4*b;
for yp=a:2*a;
im14(xp,yp)=im(xp,yp);
end
end
for xp=3*b:4*b;
for yp=2*a:3*a;
im15(xp,yp)=im(xp,yp);
end
end
for xp=3*b:4*b;
for yp=3*a:4*a;
im16(xp,yp)=im(xp,yp);
end
endfigure,imshow(im1)
% figure,imshow(im2)
% figure,imshow(im3)
% figure,imshow(im4)
% figure,imshow(im5)
% figure,imshow(im6)
% figure,imshow(im7)
% figure,imshow(im8)
% figure,imshow(im9)
% figure,imshow(im10)
% figure,imshow(im11)
% figure,imshow(im12)
% figure,imshow(im13)
% figure,imshow(im14)
% figure,imshow(im15)
% figure,imshow(im16)
% line(px1,py1)X=’;
Y=’;
XP=’;
YP=’;
MP=;%%%
AP=MP^(-1)*X;
BP=MP^(-1)*Y;
im21=uint8(zeros(size(im)));
for m=1:b+50;
for n=1:a+30;
im21(m,n)=im1(round(BP’*),round(AP’*));
end
end
figure, imshow(im21)X=’;
Y=’;
XP=’;
YP=’;
MP=;%%%%
AP=MP^(-1)*X;
BP=MP^(-1)*Y;
im22=uint8(zeros(size(im)));
for m=1:b+10;
for n=a:2*a;
im22(m,n)=im2(round(BP’*),round(AP’*));
end
end
figure, imshow(im22)X=’;
Y=’;
XP=’;
YP=’;
MP=;%%%
AP=MP^(-1)*X;
BP=MP^(-1)*Y;
im25=uint8(zeros(size(im)));
for m=b+10:b*2;
for n=1:a+30;
im25(m,n)=im5(round(BP’*),round(AP’*));
end
end
figure, imshow(im25)X=’;
Y=’;
XP=’;
YP=’;
MP=;
AP=MP^(-1)*X;
BP=MP^(-1)*Y;
im26=uint8(zeros(size(im)));
for m=b:b*2;
for n=a:2*a;
im26(m,n)=im6(round(BP’*),round(AP’*));
end
end
figure, imshow(im26)im31=im21+im22+im3+im4+im25+im26+im7+im8+im9+im10+im11+im12+im13+im14+im15+im16;
figure, imshow(im31)
line(,)
line(,)
line(,)
line(,)
bilineal.m
Mostrando bilineal.m.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *