El método también puede sentir su propio ángulo reescrita



cv2 importación como CV
numpy importación como np
matplotlib.pyplot importación como PLT
importación matemáticas

img = cv.imread (R'C: \ Users \ 51102 \ Desktop \ tradición \ 1.jpg', 0)
img = cv.cvtColor (img, cv.COLOR_BGR2RGB)
img = np.dot (img [...,: 3], [0.299, 0.587, 0.114])
plt.subplot (331)
plt.imshow (img, CMAP = 'gris')
plt.title ( 'original_img')
print ( 'original.shape =', img.shape)

#构建梯度
gradient_x = np.array ([[- 1,0,1], [- 2,0,2], [- 1,0 , 1]])
gradient_y = np.array ([[- 1, -2, -1], [0,0,0], [1,2,1]])

plt.subplot (332)

dx = cv. filter2D (img, ddepth = -1, kernel = gradient_x)
print ( 'dx.shape =', dx.shape)
plt.imshow (dx, CMAP = 'gris')
plt.title ( 'dx')
plt.subtrama (333)
cv.filter2D = Dy (IMG, -1, gradient_x)
Imprimir ( 'dy.shape =', dy.shape)
plt.imshow (Dy, CMap = 'gris')
plt.title ( 'Dy')




# direccional


plt .subplot (334)
Magnitud = (np.multiply (Dy, Dy) + np.multiply (DX, DX))
plt.imshow (magnitud, CMap = 'gris')
plt.title ( 'Magnitud')



CITA = CV. de fase (dy, dx, angleInDegrees = True) # encontrar el ángulo


# generado filtro gaussiano
"" "
filtro de Gauss para generar un (2k + 1) x (2k + 1) , los elementos individuales del filtro se calculan como sigue:
H [i, j] = (1 / (2 * pi * sigma ** 2)) * exp (-1 / 2 * sigma ** 2 ((ik-1) ** 2 + (jk-1) ** 2 ))
"" "
Sigma-1 = Sigma2 = 0,6
gau_sum = 0
Gaussian np.zeros = ([5 ,. 5.])
para I en el rango de (5):.
para J en el rango de (5).:
gaussiano [i, j] = math.exp ((- 1 / (2 * sigma1 * sigma2)) * (np.square (i-2-1) + np.square (j-2-1))) / ( Math.PI Sigma-1 * * * 2 Sigma2)
gau_sum = gau_sum Gaussian + [i, j]
gaussiana = Gaussian / gau_sum # normalizada

de impresión ( '= Guss', gaussian.shape)

W es, H = original de img.shape # tamaño de la imagen en escala de grises
_, G = gaussian.shape
new_gray np.zeros = ([W es-. 5 ,. 5-H])
new_magnitude np.zeros = ([W es-. 5 ,. 5-H])

para I en el rango de (W es -5):
para J en el rango de (5-H):.
'' '
filtrar mi propio intento de un método, de acuerdo con el ángulo de reconfigurar los pesos
I para reducir la amplitud del gradiente más grande de la dirección del gradiente puede ser suprimido, otro fortalecimiento de dirección
'' '
Guss = Gaussian
G_ = int ((. 1-G) / 2)

SI 0 <CITA [i, j] <90 o 180 [<CITA [i, j] <270 o -180 <CITA [I , j] <- 90 o -360 <cita [i,j] <- 270:
para k en el rango (g_):
para kk en el rango (g_):
guss [g_ + 1 + k, g_ + 1 + kk] = gaussiano [g_ + 1 + k, g_ + 1 + kk] / 4
guss [g_ -1 - k, g_ - 1 - kk] = gaussiano [g_ - 1 - k, g_ - 1 - kk] / 4
si 90 <cita [i, j] <180 o 270 <cita [i, j] <360 o -90 <cita [i, j] <0 o -180 <cita [i, j] <-270:
para k en el rango (g_):
para kk en el rango (g_):
guss [g_ + 1 + k, g_ - 1 - kk] = gaussiano [g_ + 1 + k, g_ - 1 - kk] / 4
guss [g_ - 1 - k, g_ + 1 + kk] = gaussiano [g_ - 1 - k, g_ + 1 + kk] / 4
new_gray [i, j] = np.sum (img [i: i + 5, j: j + 5] * guss)
new_magnitude [i, j] = np.sum (magnitud [i: i + 5, j: j + 5] * guss)








plt.subplot (335)
plt.imshow (new_gray, CMAP = 'gris')
plt.title ( 'new_gray')

plt.subplot (336)
plt.imshow (new_magnitude, CMAP = 'gris')
plt.title ( 'new_magnitude')




plt.show ()




 

 








Supongo que te gusta

Origin www.cnblogs.com/tangjunjun/p/12514660.html
Recomendado
Clasificación