skamus48's picture
Upload 26 files
5d0dc03 verified
import numpy as np
def filtro_2D(veces, col, row, Matriz_R):
"""
Applies a 2D filter to the R2 matrix to smooth it.
"""
R_old = np.copy(Matriz_R)
R_new = np.copy(Matriz_R)
for k in range(veces):
for i in range(1, col-1):
for j in range(1, row-1):
w_A = (R_old[i-1, j] + R_old[i, j-1] + R_old[i+1, j] + R_old[i, j+1]) / 4
w_B = (R_old[i-1, j-1] + R_old[i+1, j-1] + R_old[i-1, j+1] + R_old[i+1, j+1]) / (4 * np.sqrt(2))
if (w_A + w_B) > 1:
R_new[i, j] = 1
else:
R_new[i, j] = 0
R_old = np.copy(R_new)
return R_new
def filtro_3D(veces, slices, col, row, Tensor_R):
"""
Applies a 3D filter to the R2 tensor.
"""
R_old = np.copy(Tensor_R)
R_new = np.copy(Tensor_R)
for u in range(veces):
for k in range(1, slices-1):
for i in range(1, col-1):
for j in range(1, row-1):
w_A = (R_old[i-1, j, k] + R_old[i, j-1, k] + R_old[i+1, j, k] + R_old[i, j+1, k] + R_old[i, j, k-1] + R_old[i, j, k+1]) / 6
w_B1 = (R_old[i-1, j, k-1] + R_old[i+1, j, k-1] + R_old[i-1, j, k+1] + R_old[i+1, j, k+1]) / (12 * np.sqrt(2))
w_B2 = (R_old[i-1, j-1, k] + R_old[i-1, j+1, k] + R_old[i+1, j-1, k] + R_old[i+1, j+1, k]) / (12 * np.sqrt(2))
w_B3 = (R_old[i, j-1, k-1] + R_old[i, j+1, k-1] + R_old[i, j-1, k+1] + R_old[i, j+1, k+1]) / (12 * np.sqrt(2))
w_C = (R_old[i-1, j-1, k+1] + R_old[i-1, j+1, k+1] + R_old[i+1, j-1, k+1] + R_old[i+1, j+1, k+1] + R_old[i-1, j-1, k-1] + R_old[i-1, j+1, k-1] + R_old[i+1, j-1 ,k-1] + R_old[i+1, j+1 ,k-1]) / (8 * np.sqrt(3))
w_B = w_B1 + w_B2 + w_B3
if (w_A + w_B + w_C) >= 1:
R_new[i, j, k] = 1
else:
R_new[i, j, k] = 0
R_old = np.copy(R_new)
return R_new