Prelucrarea imaginilor. Transformarea bilineală. [MATLAB]

div> BRAYAN BUITRAGO
BRAYAN BUITRAGO

Urmăriți

Aug 30, 2019 · 9 min Citește

. Interpretarea creierului nostru, bazată pe informațiile pe care le primește din ochi, este puternic influențată de experiență; Acest lucru duce uneori la erori de apreciere. De-a lungul timpului vieții voastre și mai ales la cele mai vechi vârste, un individ clasificat, generalizează și caracterizează elementele împrejurimilor dvs. pentru a lua decizii rapid. Oamenii care au deficiențe în sensul lor de vedere pot corecta sau reduce defectele acestui lucru prin lentile, acest lucru este posibil dacă vorbim despre probleme de abordare, de exemplu. Odată cu dezvoltarea în achiziționarea de imagini prin instrumente tehnologice, necesitatea corectării acestor imagini a apărut, astfel încât interpretarea ulterioară este adevărată. Dacă un dispozitiv de achiziție a imaginilor furnizează imagini cu defecte de focalizare, această deficiență poate fi corectată prin adăugarea de lentile la dispozitiv. Perspectiva este un aspect important atunci când interpretează o imagine, fundamentul acestui aspect este în experiență, deoarece acesta este modul în care învățăm să estimăm măsuri, poziții, viteze etc. O interpretare exactă a imaginii obținută poate fi realizată dacă caracteristicile obiectului au fost cunoscute de către persoana care o analizează. Există importanța proporțiilor imaginii, în ceea ce privește realitatea, sunt congruente. De asemenea, folosim perspectiva pentru a sugera o idee unui individ sau pentru a-l convinge, și acolo găsim curaj atunci când vine vorba de a modifica proporțiile elementelor dintr-o imagine. Când imaginea dobândită nu corespunde ceea ce dorim să vizualizăm, putem face o modificare a imaginii astfel încât să fie mai convenabilă.

Pentru a modifica o imagine, coordonarea transformărilor pixelilor și a modificărilor în luminozitate Din imagine, acesta din urmă este realizat cu tehnici de interpolare a luminozității. Schimbarea proporțiilor imaginii pot fi înțelese cu o acțiune analoagă: Dacă avem o suprafață de gheață și extindeți această suprafață cu căldură, vom obține o suprafață de abur și vor fi regiuni goale pe suprafața menționată. Același efect se întâmplă în imagini și pentru a compensa acest defect, se utilizează tehnici de interpolare; Cu aceste tehnici presupunem valori pentru locurile goale, astfel încât imaginea să fie apreciată uniformă, aceasta este legată de rezoluția imaginii. Modul în care afectăm geometria imaginii se bazează pe tehnici de transformare geometrică. Dacă vrem să mutăm imaginea, să schimbați proporțiile de bază și înălțime, rotiți-o sau glisați, putem efectua transformarea liniară asociată. Dacă doriți să schimbați geometria imaginii fără a păstra paralelismul dintre liniile opuse ale conturului imaginii, putem folosi o transformare bilineală sau o transformare în perspectivă. Această transformare utilizează 4 puncte de referință și 4 puncte de transformare pentru a defini funcția de transformare.

legate, bilineal și perspective.

Image 2. >

Transformarea liniară va fi utilizată pentru a modifica o imagine bazată pe selecția a două pixeli de imaginea. În primul rând, pixelul „1” este selectat și ulterior pixelul „2”.Imaginea se va schimba în raport cu aceste două puncte de referință; Doriți să mutați pixelul „1” la poziția pixelului „2”, întreaga imagine trebuie să se schimbe pentru a găzdui acest nou punct de referință. Împărțirea imaginii în 16 celule egale (4×4), soluția este că fiecare celulă se schimbă la o formă specifică și toate aceste noi forme pot fi unite pentru a obține o nouă imagine a acelorași dimensiuni ale originalului. Cele de mai sus pot fi realizate utilizând transformarea bilineală aplicată în fiecare celulă.

Soluția propusă este proiectată pentru imagini formate dintr-o singură matrice, astfel încât o astfel de transformare nu poate fi aplicată imaginilor în format RGB, de exemplu.

Dezvoltarea exercițiilor fizice.

în imaginea 2 este suprapusă o plasă albastră, care trebuie să se schimbe în raport cu transformarea dorită. Această plasă are 3 linii verticale și 3 linii orizontale. Soluția la problema originală este o soluție generală, astfel încât numai imaginea de exemplu este utilizată în anumite momente ale descrierii, astfel încât explicația să fie mai clară.

Fig> Imagine 3. A. Poziția pixelului „1” B. Poziția pixelului „2”.

primul lucru care se face este localizarea liniilor de referință Deasupra, în jos, spre dreapta și spre stânga punctului „X”. Ele sunt liniile mai scurte de la punctul „X” până la capetele imaginii, așa cum se vede în imagine 3.a. Coordonatele punctului „X” sunt (PRX (1), PRY (1)).

După localizarea liniilor de referință, punctele de tăiere ale fiecărei linii de plasă cu aceste linii de referință. Este posibil ca liniile de referință să aibă puncte de tăiere cu trei, cu două, cu o linie de plasă de o linie de plasă. Mai jos sunt punctele de intersecție pentru acest caz în imaginea 4.

DIV id = „31ff0879eb”>

Imagine 4. Intersecția rețelei cu liniile de referință.

sunt trase de patru linii de referință nou pentru a grafi noua ochiuri. Punctul unde vă alăturați acestor 4 linii noi este punctul „sau” ale căror coordonate sunt (PRX (2), PRY (2)). În acest fel, linia galbenă a punctului (PRX (2), Pry (2)) la Punctul (PRX (1), 1) 1 corespunde primului rând de pixel al imaginii, partea albastră a PU NTO (PRX (2), PRY (2)) la punctul (X, Pry (1)), X corespunde celei mai recente coloane de pixeli a imaginii, partea roșie a punctului (PRX (2), Pry (2 )) La punctul (1, PRY (1)), 1 corespunde primei coloane de pixeli a imaginii și partea verde a punctului (PRX (2), Prrie (2)) până la punctul (PRX (1) , y) coloana și corespunde celui mai recent rând de pixel al imaginii, așa cum se arată în imaginea 5.

div id = „31ff0879eb”>

conectat la punctul „o”.

Dacă vă uitați la, locația punctelor de intersecție, în figura 3, trebuie să se schimbe proporțional cu schimbarea linia pe care se află. După găsirea raportului cu care se schimbă și le localizează în noua lor poziție, obținem următorul rezultat: Imaginea 6.

Div id = „31ff0879eb”>

puncte pe linii noi.

pe marginea imaginii 6 puncte în care liniile care alcătuiesc plasa sunt plasate din acești indicatori și noile puncte de intersecție sunt a urmărit noua plasă. În imaginea 7 puteți vedea acest lucru.

Div>

Valorile care contează pentru noi în imagine 7 sunt cei care indică punctele de intersecție a liniilor discontinue.

div Id = „31ff0879eb”>

iv id = „

8. Schiță Noua plasă.

Uniting Aceste puncte de intersecție poate grafica noua ochiuri. Noua plasă este folosită pentru referință vizuală, deoarece pentru a face transformarea bilineală avem nevoie doar de punctele de intersecție.

div id = „31ff0879eb”>

Identificarea punctului Noua plasă.

Identificarea intersecției punctelor se face cu ecuații drepte, pur și simplu trecerea liniilor care generează punctele de interes sunt calculate. /p>

Acum că noile puncte ale ochiului de plasă sunt cunoscute, putem realiza transformarea bilineală a fiecărei celule. Efectuarea transformării pentru celula în care se găsește cea mai mare parte a feței de Lena, procesul de transformare poate fi explicat.

div Id = „31fr0879eb”>

Fața Lena.

iv id = „1A9ABCD253”

Dacă facem transformarea în toate celulele și suprapunerea regiunilor obținute rezultatul imaginii 12.

id = „bea07022d2”>

div id =

.

Pentru a evita suprapunerea regiunilor, după cum vedem în imaginea 12, trebuie să taiem regiunile înainte de a le suprapune fiecare. Dacă am tăiat celula de imagine 11 cu conturul K5, K8, K9 și K6 al imaginii 9, obținem rezultatul imaginii 13.

DIV id = „31ff0879eb”>

440F28AF82 „

div id =”

Imaginea 13. Celula tăiată.

După tăierea și suprapunerea regiunilor tăiate, rezultatul imaginii este obținut.

ID ID DIV = „31FF0879eb”>

Imaginea 14. Imagine transformată.

rezultat al diferitelor puncte.

din mai multe transformări Cions.

Codul MATLAB

cu următorul cod Puteți să transformați prin pasul pas cu pas. Sigur că o puteți optimiza.

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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *