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.
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
Producción: