5 простых способов инвертировать изображение в MATLAB: подробное руководство

Инвертирование изображения — обычная задача при обработке изображений, и MATLAB предоставляет несколько методов для достижения этой цели. В этой статье блога мы рассмотрим пять простых способов инвертировать изображение с помощью MATLAB. Независимо от того, новичок вы или опытный пользователь MATLAB, эти методы помогут вам эффективно манипулировать и преобразовывать изображения.

Метод 1: использование функции imcomplement
Функция imcomplementв MATLAB — это простой и понятный способ инвертировать изображение. Он принимает изображение в качестве входных данных и возвращает инвертированную версию изображения. Вот пример фрагмента кода:

% Read the image
image = imread('image.jpg');
% Invert the image
inverted_image = imcomplement(image);
% Display the original and inverted images
figure;
subplot(1, 2, 1);
imshow(image);
title('Original Image');
subplot(1, 2, 2);
imshow(inverted_image);
title('Inverted Image');

Метод 2: использование арифметических операций
Другой способ инвертировать изображение — вычесть значение каждого пикселя из максимально возможного значения пикселя. Этот метод можно реализовать с помощью поэлементного вычитания в MATLAB. Вот пример:

% Read the image
image = imread('image.jpg');
% Get the maximum pixel value
max_value = double(max(image(:)));
% Invert the image using arithmetic operations
inverted_image = max_value - double(image);
% Display the original and inverted images
figure;
subplot(1, 2, 1);
imshow(image);
title('Original Image');
subplot(1, 2, 2);
imshow(uint8(inverted_image));
title('Inverted Image');

Метод 3: использование логических операций
MATLAB позволяет выполнять логические операции над изображениями. Используя логическое отрицание (~), вы можете инвертировать двоичное представление изображения. Вот пример:

% Read the image
image = imread('image.jpg');
% Convert the image to binary
binary_image = imbinarize(image);
% Invert the binary image using logical negation
inverted_binary_image = ~binary_image;
% Display the original and inverted binary images
figure;
subplot(1, 2, 1);
imshow(binary_image);
title('Original Binary Image');
subplot(1, 2, 2);
imshow(inverted_binary_image);
title('Inverted Binary Image');

Метод 4: использование справочных таблиц
Справочные таблицы можно использовать для выполнения попиксельных преобразований изображений. MATLAB предоставляет функцию intlutдля применения справочной таблицы к изображению. Вот пример использования таблицы поиска для инвертирования изображения:

% Read the image
image = imread('image.jpg');
% Create the lookup table for inversion
lookup_table = uint8(255:-1:0);
% Apply the lookup table to invert the image
inverted_image = intlut(image, lookup_table);
% Display the original and inverted images
figure;
subplot(1, 2, 1);
imshow(image);
title('Original Image');
subplot(1, 2, 2);
imshow(inverted_image);
title('Inverted Image');

Метод 5: использование манипуляций с матрицей
В MATLAB вы можете напрямую манипулировать матрицей изображения для достижения инверсии. Вычитая значение каждого пикселя из максимального значения пикселя, вы можете инвертировать изображение. Вот пример:

% Read the image
image = imread('image.jpg');
% Get the maximum pixel value
max_value = double(max(image(:)));
% Invert the image using matrix manipulation
inverted_image = max_value - double(image);
% Display the original and inverted images
figure;
subplot(1, 2, 1);
imshow(image);
title('Original Image');
subplot(1, 2, 2);
imshow(uint8(inverted_image));
title('Inverted Image');

В этой статье мы обсудили пять простых способов инвертировать изображение в MATLAB. Мы рассмотрели различные методы, от простых функций, таких как imcomplement, до более сложных методов, включающих арифметические операции, логические операции, таблицы поиска и манипуляции с матрицами. В зависимости от ваших конкретных требований и характера изображения вы можете выбрать наиболее подходящий метод. Используя эти методы в своем наборе инструментов, вы можете легко манипулировать и преобразовывать изображения в MATLAB.