StevanovicMilan

8.6

Sep 18th, 2021
657
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. '''
  2. Sliku img_sb iz primera 8.4 filtrirati median filtrom statistike poretka dimenzije 3x3.
  3.  
  4. 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.
  5.  
  6. U zavisnosti od vrednosti indeksa ovim načinom se mogu definisati 3 osnovne vrste:
  7.  
  8. Min filtar  f^(x,y)=min(s,t)∈Sx,yg(s,t)  - indeks је 0, tj. najmanja vrednost u poretku.
  9. Max filtar  f^(x,y)=max(s,t)∈Sx,yg(s,t)  - indeks je indeks poslednjeg elementa, tj. najveća vrednost u poretku.
  10. 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.
  11. 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.
  12.  
  13. 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).
  14.  
  15. Shodno tome, Min filtar je definisan sa indeksom 0 a Max sa indeksom 8.
  16.  
  17. Funkcija uvek radi zero-padding.
  18. '''
  19. import plotly.express as px
  20. import numpy as np
  21. from scipy import signal
  22. from scipy import ndimage
  23.  
  24. fig = px.imshow(img_sb, zmin=0, zmax=255, color_continuous_scale='gray')
  25. fig.show()
  26.  
  27. region = np.ones((3,3))
  28.  
  29. img_f = signal.order_filter(img_sb,domain=region,rank=4)
  30.  
  31. fig = px.imshow(img_f, zmin=0, zmax=255, color_continuous_scale='gray')
  32. fig.show()
  33.  
  34. '''
  35. 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).
  36.  
  37. Alternativno, moguće je koristiti grupu filtara iz scipy.ndimage modula koji implementiraju osnovne filtre poretka sa dodatnom mogućnosti podešavanja proširenja.
  38.  
  39. scipy.ndimage.minimum_filter
  40. scipy.ndimage.maximum_filter
  41. scipy.ndimage.median_filter
  42. 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.
  43. '''
  44.  
  45. region = np.ones((3,3))
  46.  
  47. img_f = ndimage.median_filter(img_sb,footprint=region,mode='reflect')
  48.  
  49. fig = px.imshow(img_f, zmin=0, zmax=255, color_continuous_scale='gray')
  50. fig.show()
RAW Paste Data