Advertisement
StevanovicMilan

9.3

Sep 18th, 2021
760
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.49 KB | None | 0 0
  1. '''
  2. Napisati funkciju idealNotchFilter koja implementira idealni noč filtar definisan izrazom:
  3.  
  4. gde su  (u,v)  prostorne koordinate DFT slike,  D1  i  D2  su euklidska rastojanja posmatrana od pozicija para smetnji  (u0,v0)  i  (−u0,−v0)  a  D0  je poluprečnik kružnice.
  5.  
  6. Prikazati amplitudsku karakteristiku filtra, kao i dodatan 3D prikaz.
  7.  
  8. Definisanim filtrom filtrirati periodičnu smetnju prisutnu u slici moon_periodic.png.
  9. ------------------------------------------------------------------------------------------------------------------------------------------------------------
  10. Noč filtri se definišu preko rastojanja  D1(u,v)  i  D1(u,v)  u odnosu na koordinate  (u0,v0)  i  (−u0,−v0)  frekvencijskih komponenti koje treba potisnuti:
  11.  
  12. Član  u−P2  i  v−Q2  predstavljaju  (u,v)  koordinate sa koordinatnim početkom u sredini slike.
  13.  
  14. Svaki notch filtar potiskuje jedan par smetnji (jedna smetnja i njena odgovarajuća simetrija u spektru), tako da za potiskivanje više njih potrebno je nadovezati filtre.
  15. '''
  16. def idealNotchFilter(H_size,D0,u0,v0):
  17.   u = np.arange(H_size[0]).reshape(-1, 1) - np.floor(H_size[0]/2)
  18.   v = np.arange(H_size[1]) - np.floor(H_size[1]/2)
  19.  
  20.   D1 = np.sqrt((u-u0)**2 + (v-v0)**2)
  21.   D2 = np.sqrt((u+u0)**2 + (v+v0)**2)
  22.  
  23.   H = (D1>D0) & (D2>D0)
  24.   return H
  25.  
  26. import plotly.express as px
  27. from skimage import io
  28. import numpy as np
  29.  
  30. img = io.imread('moon_periodic.png')
  31. fig = px.imshow(img, color_continuous_scale='gray')
  32. fig.show()
  33.  
  34. IMG = np.fft.fftshift(np.fft.fft2(img, s=(2*img.shape[0],2*img.shape[1])))
  35. fig = px.imshow(np.log(np.abs(IMG)+1), color_continuous_scale='gray')
  36. fig.show(config={'modeBarButtonsToAdd':['drawline',
  37.                                         'drawopenpath',
  38.                                         'drawcircle',
  39.                                         'eraseshape']})
  40.                                        
  41. H1 = idealNotchFilter(IMG.shape, 5, 128, 40)
  42. fig = px.imshow(np.abs(H1), color_continuous_scale='gray')
  43. fig.show()
  44.  
  45. H2 = idealNotchFilter(IMG.shape, 5, -128, 40)
  46. fig = px.imshow(np.abs(H2), color_continuous_scale='gray')
  47. fig.show()
  48.  
  49. import plotly.graph_objects as go
  50.  
  51. fig = go.Figure()
  52. fig.add_trace(go.Surface(z=np.abs(H1*H2)*1))
  53. fig.show()
  54.  
  55. IMG1 = IMG * H1 * H2
  56. fig = px.imshow(np.log(np.abs(IMG1)+1), color_continuous_scale='gray')
  57. fig.show()
  58.  
  59. img1 = np.real(np.fft.ifft2(np.fft.ifftshift(IMG1)))
  60. img1 = img1[:img.shape[0],:img.shape[1]]
  61.  
  62. fig = px.imshow(img1, color_continuous_scale='gray')
  63. fig.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement