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 obtener la imagen especular de la imagen dada si invertimos el orden de los píxeles (elementos de la array) en cada fila.
Código n.º 1: uso de la función de biblioteca de MATLAB
% Read the target image file img = imread('leaf.png'); % Reverse the element in each row mirror_image = flip(img, 2); % Display the mirror image imshow(mirror_img); title('Mirror image');
Código n.º 2: uso de la manipulación de arrays
% Read the target image file img = imread('leaf.png'); % Flip the columns left to right mirror_image = img(:, end :, -1:, 1, :); % Display the mirror image imshow(mirror_img); title('Mirror 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 fila en cada plano de la imagen
- Mostrar la imagen del espejo
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 row % in every image plane for plane = 1: z for i = 1 : x len = y; for j = 1 : y % To reverse the order of the element % of a row we can swap the % leftmost element of the row with % its rightmost element if j < y/2 temp = img(i, j, plane); img(i, j, plane) = img(i, len, plane); img(i, len, plane) = temp; len = len - 1; end end end end % Display the mirror image imshow(img); title('Mirror image');
Imagen de entrada: leaf.png
Producción: