В этом примере показано, как выполнить сохраняющее ребро сглаживание изображений при помощи предварительно созданного интерфейса MATLAB® к функции OpenCV cv::edgePreservingFilter. В этом примере вы также используете createMat служебная функция, чтобы задать массивы ввода и вывода и getImage служебная функция, чтобы считать выходное изображение, возвращенное функцией OpenCV.
Добавьте интерфейс MATLAB в имена пакета OpenCV к списку импорта.
import clib.opencv.*; import vision.opencv.util.*;
Считайте изображение в рабочее пространство MATLAB.
img = imread("peppers.png");Создайте объекты интерфейса MATLAB для OpenCV MatND и InputArray классы, чтобы сохранить входное изображение.
[inputMat,inputArray] = createMat(img);
Создайте объекты интерфейса MATLAB для OpenCV MatND и OutputArray классы записи выходное изображение, возвращенное функцией OpenCV.
[outputMat,outputArray] = createMat;
Сглаживайте входное изображение при помощи функции OpenCV cv::edgePreservingFilter. Чтобы вызвать эту функцию из MATLAB, необходимо использовать обозначение cv.edgePreservingFilter.
cv.edgePreservingFilter(inputArray,outputArray);
Считайте отфильтрованное выходное изображение, возвращенное функцией OpenCV.
filteredImg = getImage(outputArray);
Отобразите исходный вход и отфильтрованные выходные изображения.
figure
imshow(img)
title("Input Image")
figure
imshow(filteredImg)
title("Filtered Output Image")
Задайте значения параметров для сохраняющего ребро фильтра. Установите эти значения:
flags к 2, выполнять нормированную фильтрацию свертки.
Стандартные отклонения sigma_s к 20 и sigma_r к 0.3.
flags = 2; sigma_s = 20; sigma_r = 0.2;
Выполните фильтрацию при помощи заданных параметров фильтра.
cv.edgePreservingFilter(inputArray,outputArray,flags,sigma_s,sigma_r);
Считайте отфильтрованное выходное изображение, возвращенное функцией OpenCV.
filteredImg = getImage(outputArray);
Отобразите отфильтрованное выходное изображение.
figure
imshow(filteredImg)
title("Filtered Output Image")