В этом примере показано, как выполнить сохраняющее ребро сглаживание изображений при помощи предварительно созданного интерфейса 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")