Если вы начинающий энтузиаст MATLAB и хотите погрузиться в мир обработки изображений, понимание того, как выполнять вычитание изображений, является важнейшим навыком, который должен быть в вашем наборе инструментов. Вычитание изображений позволяет выделить различия между двумя изображениями и извлечь полезную информацию. В этой статье мы рассмотрим несколько методов выполнения вычитания изображений в MATLAB, сопровождаемых примерами кода и понятными объяснениями.
Метод 1: базовое попиксельное вычитание
Самый простой метод вычитания изображений включает в себя вычитание значений соответствующих пикселей в двух изображениях и создание нового результирующего изображения. Вот фрагмент кода, демонстрирующий этот метод:
image1 = imread('image1.jpg');
image2 = imread('image2.jpg');
subtracted_image = imsubtract(image1, image2);
imshow(subtracted_image);
Метод 2: вычитание фона
Во многих приложениях компьютерного зрения фон из изображения обычно удаляется. Вычитание фона помогает обнаружить движущиеся объекты или выделить элементы переднего плана. MATLAB предоставляет объект vision.ForegroundDetector
, который использует статистическую модель для вычитания фона. Вот пример:
videoReader = vision.VideoFileReader('video.mp4');
foregroundDetector = vision.ForegroundDetector();
while ~isDone(videoReader)
frame = step(videoReader);
foregroundMask = step(foregroundDetector, frame);
imshow(foregroundMask);
end
Метод 3: вычитание на основе порогов
Другой подход предполагает применение порога к разностному изображению, полученному в результате попиксельного вычитания. Этот метод помогает подчеркнуть существенные различия, подавляя при этом незначительные вариации. Вот пример:
image1 = imread('image1.jpg');
image2 = imread('image2.jpg');
difference_image = imsubtract(image1, image2);
threshold = 50;
binary_image = difference_image > threshold;
imshow(binary_image);
Метод 4: Морфологические операции
Морфологические операции, такие как эрозия и расширение, могут быть применены к вычтенному изображению для дальнейшего уточнения результатов. Эти операции могут помочь удалить шум или заполнить пробелы. Вот пример:
image1 = imread('image1.jpg');
image2 = imread('image2.jpg');
subtracted_image = imsubtract(image1, image2);
threshold = 50;
binary_image = subtracted_image > threshold;
processed_image = imopen(binary_image, strel('disk', 3));
imshow(processed_image);
В этой статье мы рассмотрели несколько методов выполнения вычитания изображений в MATLAB. Мы обсудили базовое попиксельное вычитание, вычитание фона с использованием объекта vision.ForegroundDetector
, вычитание на основе пороговых значений и морфологические операции. Освоив эти методы, вы сможете с легкостью анализировать изображения и манипулировать ими в MATLAB!