es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Unpatchify solo admite la reconstrucción de imágenes con una escala uniforme para todos los parches.

Estoy tratando de hacer parches y deshacer parches en una imagen de muestra de tamaño (2448,3264). Estoy utilizando la biblioteca patchify para hacer mis parches. Este código fue tomado del canal de YouTube de digital Sreeni.

from patchify import patchify, unpatchify

img = cv2.imread(path,0)
patches_img = patchify(img, (256,256), step=256)
image1 = []
for i in range(patches_img.shape[0]):
    for j in range(patches_img.shape[1]):
        single_patch_img = patches_img[i, j, :, :]
        image1.append(single_patch_img)

Para la reconstrucción de los parches anteriores, hice esto:

reshape = np.reshape(image1,(patches_img.shape[0], patches_img.shape[1], 256,256))
reconstruct = unpatchify(reshape,img.shape)

Estoy enfrentando un problema al reconstruirlo. Cuando cambié la forma del array de parches e intenté deshacer los parches, obtengo el siguiente error.

NonUniformStepSizeError: Unpatchify solo admite la reconstrucción de imágenes con un tamaño de paso uniforme para todos los parches. Sin embargo, la reconstrucción de parches de 12 x 256 px en una imagen de 3264 requiere un tamaño de paso de 273.45454545454544, que no es un número entero.

¿Cómo eliminar el error de tamaño de paso? ¿Dónde me equivoqué? ¿Alguna sugerencia?

Imagen de ejemplo:

enter image description here

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el tamaño de paso utilizado para dividir la imagen en parches (256) no es un factor del tamaño de la imagen a lo largo de una de sus dimensiones (3264). Esto significa que los parches creados no encajan exactamente en la imagen sin superponerse, y por lo tanto la etapa de reconstrucción falla.

    Para eliminar el error de tamaño de paso, una opción es ajustar el tamaño de los parches y el tamaño de paso de manera que sean factores del tamaño de la imagen. Por ejemplo, para un tamaño de imagen de (2448, 3264), se puede utilizar un tamaño de parche de (2448//n, 3264//m) y un tamaño de paso de (2448//n, 3264//m), donde n y m son enteros que dividen el tamaño de la imagen. Esto asegura que los parches encajen en la imagen sin espacios ni superposiciones, y la etapa de reconstrucción se pueda llevar a cabo con éxito.

    Alternativamente, se puede utilizar una función de relleno para añadir padding a la imagen antes de dividirla en parches, de manera que los parches resultantes encajen exactamente en la imagen. El relleno se puede eliminar después de la etapa de reconstrucción.

Comments are closed.