Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Sliku img_so iz prethodnog primera filtrirati harmonijskim usrednjivačem definisanim izrazom:
- 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.
- Funkciju za filtriranje nazvati harmonicMeanFilt i podrazumevati simetrično proširenje. Sliku filtrirati sa regionom 5x5. Odrediti PSNR.
- '''
- import numpy as np
- import math
- import plotly.express as px
- def harmonicMeanFilt(g, S_shape):
- f = np.zeros(g.shape)
- pad_rows = math.floor(S_shape[0]/2)
- pad_cols = math.floor(S_shape[1]/2)
- img_p = np.pad(g, ((pad_rows,),(pad_cols,)), mode='symmetric')
- for row in range(f.shape[0]):
- for col in range(f.shape[1]):
- region = img_p[row:row+S_shape[0], col:col+S_shape[1]]
- res = np.prod(S_shape)/(1/region).sum()
- f[row, col] = res
- return f
- S_shape = (5,5)
- img_f = harmonicMeanFilt(img_so, S_shape)
- fig = px.imshow(img_f, zmin=0, zmax=255, color_continuous_scale='gray')
- fig.show()
- psnr = 10*np.log10(255**2/((img - img_f)**2).mean())
- print("PSNR za harmonijski usrednjivac dimenzije {} je {}".format(S_shape, psnr))
- img_f = harmonicMeanFilt(img_sb, S_shape)
- 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