Cómo voltear verticalmente una imagen usando MATLAB

Requisito previo: Representación de imágenes en MATLAB

En MATLAB, las imágenes se almacenan en arrays, en las que cada elemento de la array corresponde a un solo píxel discreto de la imagen. Podemos voltear la imagen dada verticalmente (a lo largo del eje x), si invertimos el orden de los píxeles (elementos de la array) en cada columna como se ilustra en la imagen de abajo.

Vertically Flipped Image

Código n.º 1: uso de la función de biblioteca de MATLAB

% Read the target image file
img = imread('leaf.png');
   
% Reverse the order of the element in each column
vertFlip_img = flip(img, 1);
   
% Display the vertically flipped image
imshow(vertFlip_img); 
title('Vertically flipped image');

Código n.º 2: uso de la manipulación de arrays

% Read the target image file
img = imread('leaf.png');
   
% Flip the columns vertically 
vertFlip_img = img(end : -1: 1, :, :);
   
% Display the vertically flipped image
imshow(vertFlip_img); 
title('Vertically flipped image');

Código n.º 3: uso de la manipulación de arrays (uso de bucles)

Acercarse:

  • Lea el archivo de imagen de origen en el entorno MATLAB
  • Obtenga las dimensiones de la array de la imagen
  • Invierta el orden de los elementos de cada columna en cada plano de la imagen
  • Muestre la imagen del agua (imagen volteada verticalmente).

A continuación se muestra la implementación del enfoque anterior:

% Read the target image file
img = imread('leaf.png');
   
% Get the dimensions of the image
[x, y, z] = size(img);
   
   
% Reverse elements of each column
% in each image plane (dimension)
for plane = 1 : z
    len = x;
    for i = 1 : x 
        for j = 1 : y
   
            % To reverse the order of the element
            % of a column we can swap the 
            % topmost element of the row with
            % its bottom-most element  
              
            if i < x/2 
                temp = img(i, j, plane);
                img(i, j, plane) = img(len, j, plane);
                img(len, j, plane) = temp;
                 
            end
        end
        len = len - 1;
    end
end
   
   
% Display the vertically flipped image
imshow(img); 
title('Vertically flipped image');

Imagen de entrada: leaf.png
Input image

Producción:
Output Image

Publicación traducida automáticamente

Artículo escrito por ihritik y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *