Los píxeles de una imagen se representan como números enteros. Después de desenfocar, cada píxel ‘x’ de la imagen resultante tiene un valor igual al promedio de los píxeles que rodean a ‘x’, incluida ‘x’. Por ejemplo, considere una imagen de 3 * 3 como
Then, the resulting image after blur is blurred_image =
So, the pixel of blurred image is calculated as (1 + 1 + 1 + 1 + 7 + 1 + 1 + 1 + 1) / 9 = 1.66666 = 1
Algoritmo de desenfoque de cuadro –
El desenfoque de cuadro también se conoce como filtro lineal de cuadro. Los desenfoques de cuadro se utilizan con frecuencia para aproximar el desenfoque gaussiano.
Un desenfoque de cuadro generalmente se implementa como un efecto de imagen que afecta a toda la pantalla. El color borroso del píxel actual es el promedio del color del píxel actual y sus 8 píxeles vecinos.
Nota: Para cada array de 3 * 3 píxeles, hay un píxel borroso calculado como se indicó anteriormente.
Por ejemplo, considere la siguiente imagen.
Su imagen borrosa se muestra a continuación:
Explicación:
Hay cuatro arrays de 3 * 3 posibles en la imagen de arriba. Entonces hay 4 píxeles borrosos en la imagen resultante. Las cuatro arrays son:
, , , and
Implementación en Python:
def square_matrix(square): """ This function will calculate the value x (i.e. blurred pixel value) for each 3 * 3 blur image. """ tot_sum = 0 # Calculate sum of all the pixels in 3 * 3 matrix for i in range(3): for j in range(3): tot_sum += square[i][j] return tot_sum // 9 # return the average of the sum of pixels def boxBlur(image): """ This function will calculate the blurred image for given n * n image. """ square = [] # This will store the 3 * 3 matrix # which will be used to find its blurred pixel square_row = [] # This will store one row of a 3 * 3 matrix and # will be appended in square blur_row = [] # Here we will store the resulting blurred # pixels possible in one row # and will append this in the blur_img blur_img = [] # This is the resulting blurred image # number of rows in the given image n_rows = len(image) # number of columns in the given image n_col = len(image[0]) # rp is row pointer and cp is column pointer rp, cp = 0, 0 # This while loop will be used to # calculate all the blurred pixel in the first row while rp <= n_rows - 3: while cp <= n_col-3: for i in range(rp, rp + 3): for j in range(cp, cp + 3): # append all the pixels in a row of 3 * 3 matrix square_row.append(image[i][j]) # append the row in the square i.e. 3 * 3 matrix square.append(square_row) square_row = [] # calculate the blurred pixel for given 3 * 3 matrix # i.e. square and append it in blur_row blur_row.append(square_matrix(square)) square = [] # increase the column pointer cp = cp + 1 # append the blur_row in blur_image blur_img.append(blur_row) blur_row = [] rp = rp + 1 # increase row pointer cp = 0 # start column pointer from 0 again # Return the resulting pixel matrix return blur_img # Driver code image = [[7, 4, 0, 1], [5, 6, 2, 2], [6, 10, 7, 8], [1, 4, 2, 0]] print(boxBlur(image))
Producción:
[[5, 4], [4, 4]]
Caso de prueba 2:
image = [[36, 0, 18, 9], [27, 54, 9, 0], [81, 63, 72, 45]] print(boxBlur(image))
Producción:
[[40, 30]]
Lectura adicional: Box Blur usando la biblioteca PIL | Python
Publicación traducida automáticamente
Artículo escrito por mkumarchaudhary06 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA