StevanovicMilan

8.5

Sep 18th, 2021
641
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. '''
  2. Sliku img_so iz prethodnog primera filtrirati harmonijskim usrednjivačem definisanim izrazom:
  3.  
  4. gde  (s,t)  predstavljaju prostorne koordinate regiona  Sx,y  posmatran oko centra pozicije  (x,y) ,  g  je ulazna slika a  m,n  predstavljaju dimenzije regiona koji se posmatra.
  5.  
  6. Funkciju za filtriranje nazvati harmonicMeanFilt i podrazumevati simetrično proširenje. Sliku filtrirati sa regionom 5x5. Odrediti PSNR.
  7. '''
  8. import numpy as np
  9. import math
  10. import plotly.express as px
  11.  
  12. def harmonicMeanFilt(g, S_shape):
  13.   f = np.zeros(g.shape)
  14.  
  15.   pad_rows = math.floor(S_shape[0]/2)
  16.   pad_cols = math.floor(S_shape[1]/2)
  17.  
  18.   img_p = np.pad(g, ((pad_rows,),(pad_cols,)), mode='symmetric')
  19.  
  20.   for row in range(f.shape[0]):
  21.     for col in range(f.shape[1]):
  22.       region = img_p[row:row+S_shape[0], col:col+S_shape[1]]
  23.  
  24.       res = np.prod(S_shape)/(1/region).sum()
  25.  
  26.       f[row, col] = res
  27.  
  28.   return f
  29.  
  30.  
  31. S_shape = (5,5)
  32.  
  33. img_f = harmonicMeanFilt(img_so, S_shape)
  34.  
  35. fig = px.imshow(img_f, zmin=0, zmax=255, color_continuous_scale='gray')
  36. fig.show()
  37.  
  38. psnr = 10*np.log10(255**2/((img - img_f)**2).mean())
  39. print("PSNR za harmonijski usrednjivac dimenzije {} je {}".format(S_shape, psnr))
  40.  
  41. img_f = harmonicMeanFilt(img_sb, S_shape)
  42.  
  43. fig = px.imshow(img_f, zmin=0, zmax=255, color_continuous_scale='gray')
  44. fig.show()
RAW Paste Data