Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Sliku img_sb iz primera 8.4 filtrirati median filtrom statistike poretka dimenzije 3x3.
- Filtri statistike poretka (engl. order-statistics filters) predstavljaju grupu nelinearnih filtara koji sortiraju elemente iz posmatranog regiona datim nekom maskom u rastućem poretku i vraćaju vrednost određenu zahtevanim indeksom u okviru ovog poretka.
- U zavisnosti od vrednosti indeksa ovim načinom se mogu definisati 3 osnovne vrste:
- Min filtar f^(x,y)=min(s,t)∈Sx,yg(s,t) - indeks је 0, tj. najmanja vrednost u poretku.
- Max filtar f^(x,y)=max(s,t)∈Sx,yg(s,t) - indeks je indeks poslednjeg elementa, tj. najveća vrednost u poretku.
- Median filtar f^(x,y)=median(s,t)∈Sx,yg(s,t) - indeks je indeks centralnog elementa, tj. vrednost koja je veća od 50% preostalih piksela i 50% manja od vrednosti preostalih piksela.
- Opšta funkcija za filtre poretka je implementirana u scipy.signal.order_filter. Ulazni parametri su N-dimenzioni niz koji se filtrira, domain parametar koji označava masku po kojoj se posmatraju elementi u regionu (sa vrednostima 0 i 1) i rank koji obeležava indeks iz poretka od interesa.
- Ukoliko posmatramo sve elemente 3x3 regiona, domain je potrebno definisati kao matricu sa svim jedinicama, a za određivanje median vrednosti, indeks od interesa biće 4 (centralni u opsegu od 0 do 8).
- Shodno tome, Min filtar je definisan sa indeksom 0 a Max sa indeksom 8.
- Funkcija uvek radi zero-padding.
- '''
- import plotly.express as px
- import numpy as np
- from scipy import signal
- from scipy import ndimage
- fig = px.imshow(img_sb, zmin=0, zmax=255, color_continuous_scale='gray')
- fig.show()
- region = np.ones((3,3))
- img_f = signal.order_filter(img_sb,domain=region,rank=4)
- fig = px.imshow(img_f, zmin=0, zmax=255, color_continuous_scale='gray')
- fig.show()
- '''
- Možemo primetiti da su neki pikseli ostali sa vrednostima oštećenja. Proces filtriranja se može ponavljati do uspešnog filtriranja svih oštećenja ili dostizanja konvergencije (nakon čega primena filtra daje identičnu sliku).
- Alternativno, moguće je koristiti grupu filtara iz scipy.ndimage modula koji implementiraju osnovne filtre poretka sa dodatnom mogućnosti podešavanja proširenja.
- scipy.ndimage.minimum_filter
- scipy.ndimage.maximum_filter
- scipy.ndimage.median_filter
- Funkcije primaju parametar slike koja se filtrira, footprint parametra koji ima isto ponašanje kao i domain u okviru order_filter() funkcije i parametar mode za vrstu proširenja.
- '''
- region = np.ones((3,3))
- img_f = ndimage.median_filter(img_sb,footprint=region,mode='reflect')
- fig = px.imshow(img_f, zmin=0, zmax=255, color_continuous_scale='gray')
- fig.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement