Algoritmia - Necesito este algoritmo

 
Vista:

Necesito este algoritmo

Publicado por Rafael (1 intervención) el 24/01/2005 11:21:13
A ver si a alguien se le ocurre una manera mas o menos sencilla de hacerlo. Yo lo q kiero es doblar de tamaño una imagen. Si suponemos que la imagen es una matriz de pixeles (o numeros p ej), pues lo q kiero hacer es que cada pixel se propague a los espacios siguientes para hacerlo mas grande.

Os pongo un ejemplo para q se entienda mas claro:

Vamos a suponer q cada numero es un color: Tenemos una matriz asi:

1 2 3
4 5 6
7 8 9

Al Doblarla quiero q aparezca asi:

1 1 2 2 3 3
1 1 2 2 3 3
4 4 5 5 6 6
4 4 5 5 6 6
7 7 8 8 9 9
7 7 8 8 9 9

Y al doblarla de nuevo:

1 1 1 1 2 2 2 2 3 3 3 3
1 1 1 1 2 2 2 2 3 3 3 3
1 1 1 1 2 2 2 2 3 3 3 3
1 1 1 1 2 2 2 2 3 3 3 3
4 4 4 4 5 5 5 5 6 6 6 6
4 4 4 4 5 5 5 5 6 6 6 6
4 4 4 4 5 5 5 5 6 6 6 6
4 4 4 4 5 5 5 5 6 6 6 6
7 7 7 7 8 8 8 8 9 9 9 9
7 7 7 7 8 8 8 8 9 9 9 9
7 7 7 7 8 8 8 8 9 9 9 9
7 7 7 7 8 8 8 8 9 9 9 9

Y asi sucesivamente...es algo parecido a la lupa del windows.

Eso solo...si a alguien se le ocurre una manera de hacerlo, me da = el lenguaje o pseudocodigo, se lo agradeceria bastante O algun codigo fuente que haga eso...o cualkier tipo de informacion.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Duplicación de tamaño de imagen por duplicación de píxeles

Publicado por Alejandro (307 intervenciones) el 05/03/2024 00:01:36
Rafael, entiendo, lo que estás buscando es una operación de interpolación simple para expandir la imagen. Puedes lograrlo mediante un algoritmo de duplicación de píxeles. A continuación, te proporcionaré un ejemplo en pseudocódigo para ilustrar cómo podrías implementar esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Función para doblar el tamaño de una matriz de píxeles
Función doblarImagen(matrizOriginal):
    filasOriginales = longitud(matrizOriginal)
    columnasOriginales = longitud(matrizOriginal[0])
 
    # Crear una nueva matriz con el doble de filas y columnas
    nuevaMatriz = nuevaMatriz(filasOriginales * 2, columnasOriginales * 2)
 
    # Duplicar píxeles horizontalmente y verticalmente
    Para i desde 0 hasta filasOriginales - 1:
        Para j desde 0 hasta columnasOriginales - 1:
            # Duplicar píxel horizontalmente
            nuevaMatriz[i * 2][j * 2] = matrizOriginal[i][j]
            nuevaMatriz[i * 2][j * 2 + 1] = matrizOriginal[i][j]
 
            # Duplicar píxel verticalmente
            nuevaMatriz[i * 2 + 1][j * 2] = matrizOriginal[i][j]
            nuevaMatriz[i * 2 + 1][j * 2 + 1] = matrizOriginal[i][j]
 
    Devolver nuevaMatriz
 
# Ejemplo de uso
matrizOriginal = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
 
matrizDoblada = doblarImagen(matrizOriginal)
 
# Mostrar la matriz doblada
Para fila en matrizDoblada:
    Imprimir(fila)

Este pseudocódigo describe la duplicación de píxeles tanto horizontal como verticalmente. Puedes adaptar este enfoque según tus necesidades específicas y el lenguaje de programación que estés utilizando. Es importante destacar que este método simplemente duplica los píxeles y no realiza interpolación para suavizar la imagen, pero puede ser un buen punto de partida para tus necesidades.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar