5.24. Polarne transformacije¶
Polarne koordinate imenuju svaki piksel kutom od referentnog smjera i udaljenošću od odabranog središta, umjesto vodoravnih i okomitih odmaka od ishodišta u gornjem lijevom kutu. Ovaj prikaz opravdava svoju vrijednost jednim identitetom: rotacija oko odabranog središta postaje translacija duž osi kuta, što omogućuje algoritmu neovisnom o rotaciji pretraživanje znatno jednostavnijeg prostora parametara nego izravno pretraživanje rotacija. linpolar() i logpolar() izvode reprojekciju.
5.24.1. Dvije metode¶
linpolar() izvodi reprojekciju iz kartezijevih u polarne koordinate s linearnom osi udaljenosti. Svaki izlazni stupac odgovara fiksnom kutu oko središta; svaki izlazni redak odgovara fiksnoj udaljenosti od središta.
img.linpolar()
logpolar() izvodi istu reprojekciju s logaritamskom osi udaljenosti. Postupanje s kutom je identično; razlikuje se to što udaljenosti rastu eksponencijalno niz retke izlaza umjesto linearno. Razlika je važna zbog drugog geometrijskog identiteta koji polarne koordinate otkrivaju: skaliranje izvora oko odabranog središta postaje translacija duž osi udaljenosti – ali samo kada je ta os logaritamska. S linearnom osi udaljenosti, skaliranje rasteže polarnu sliku; s logaritamskom osi udaljenosti, skaliranje je pomiče za fiksni iznos.
img.logpolar()
Obje metode primaju ključne riječi x= i y= koje postavljaju središte polarne reprojekcije u koordinatama piksela izvora, s pretpostavljenim vrijednostima polovice širine slike odnosno polovice visine slike. Izbor središta je važan: polarna transformacija oko pogrešne točke završava s premiješanim sadržajem na način koji uništava identitet rotacije / translacije.
Brojčanik sata reprojiciran metodama linpolar() i logpolar(). Koncentrične kružnice u izvoru postaju vodoravne crte u izlazu; kutne crtice postaju ravnomjerno raspoređene okomite crte duž osi kuta. Log-polarna varijanta sažima radijalni razmak.¶
5.24.2. Kada posegnuti za kojom¶
Izbor između linpolar() i logpolar() je izbor koja invarijantnost je aplikaciji potrebna. Za invarijantnost na rotaciju samu – otkrivanje da se ista scena pojavljuje u dvije sličice, pri čemu je druga zarotirana za nepoznati kut – linpolar() je dovoljna: rotacija postaje vodoravni pomak u polarnoj slici, a usklađivač koji radi samo s translacijom poput find_displacement() rekonstruira kut kao veličinu pomaka. Kada je važna i invarijantnost na mjerilo – druga sličica je zarotirana i uvećana – logpolar() sažima obje nepoznanice u translacije: vodoravnu za rotaciju, okomitu za mjerilo.
To je standardni recept za pratitelj otporan na promjene rotacije i mjerila: reprojicirajte referentnu sličicu i svaku sličicu uživo u log-polarne koordinate oko istog središta, pokrenite find_displacement() na paru i očitajte polja rotation i scale iz rezultata.
5.24.3. Razmotavanje kružnih značajki¶
Zasebna upotreba polarnih transformacija je razmotavanje značajki koje su u slici prirodno kružne. Brojčanik sata, skala mjernog instrumenta, inspekcijska meta koja je po dizajnu kružna – sve one postaju linearne u polarnoj projekciji, što je oblik s kojim većini algoritama je lakše raditi.
Slika iznad to izravno prikazuje: dvanaest crtica na brojčaniku sata, ravnomjerno raspoređenih oko opsega u kartezijevim koordinatama, postaju dvanaest ravnomjerno raspoređenih okomitih crta u polarnoj slici. Pravokutnik oko bilo koje pojedine crtice u polarnoj slici identificira položaj te crtice neovisno o tome kako je brojčanik sata bio zarotiran prilikom snimanja. Usklađivač predložaka pokrenut kroz polarnu sliku pronalazi svaku crticu u jednom prolazu.
5.24.4. Inverzno preslikavanje¶
reverse=True izvodi inverziju izravne polarne projekcije: zadanu polarnu sliku, proizvodi kartezijevu sliku čija je ona polarna projekcija. Aplikacija poziva izravni oblik za pokretanje algoritma u polarnim koordinatama, a zatim poziva inverzni oblik za projiciranje rezultata natrag u kartezijeve koordinate za bilo koju nizvodnu fazu koja ga treba vidjeti.
Najčešća upotreba je izmjena polarne slike i projiciranje natrag: filtar primijenjen na polarnu sliku – vodoravno zaglađivanje koje, u polarnim terminima, zamućuje preko kutova ali zadržava radijalnu strukturu – proizvodi kartezijev rezultat koji je kutno zamućen, što kartezijev filtar ne može učiniti izravno.