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.

Tri ploče u nizu. Krajnja lijeva je kartezijeva izvorna slika koja prikazuje brojčanik sata -- dvije koncentrične kružnice s dvanaest crtica oko vanjskog ruba na višekratnicima 30 stupnjeva, te jednu kazaljku usmjerenu u jednom smjeru. Srednja ploča prikazuje linpolar reprojekciju tog izvora: pravokutnu izlaznu sliku gdje se dvanaest crtica pojavljuje kao ravnomjerno raspoređene okomite crte duž gornjeg retka, dvije koncentrične kružnice pojavljuju se kao dvije vodoravne crte na različitim okomitim položajima, a kazaljka sata pojavljuje se kao jedna okomita crta na položaju koji odgovara njezinu kutu u izvoru. Krajnja desna ploča prikazuje logpolar reprojekciju: istu kutnu raspodjelu duž vodoravne osi, ali s razmakom između unutarnje i vanjske kružnice sažetim jer je os udaljenosti logaritamska.

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.