В этом примере показано, как использовать новые функции окупаемости инвестиций для создания интерактивного инструмента сравнения изображений. При работе с изображениями нам часто необходимо визуально оценить влияние функции на изображение. Некоторые эффекты хорошо различимы, как краевой фильтр. Однако некоторые последствия являются более тонкими и нуждаются в более тщательном изучении.
Прочитайте образец изображения в рабочей области, а затем создайте версию изображения в градациях серого. Используйте imshowpair для просмотра двух изображений. montage отображает изображения рядом друг с другом.
im = imread('peppers.png'); imgray = rgb2gray(im); figure; imshowpair(im,imgray,'montage')

Используя ROI, установите альфа-слой (прозрачность) двух уложенных в стопку изображений так, чтобы одно изображение отображалось только внутри ROI. Это выборочное представление следует за ROI, чтобы его можно было перемещать в интерактивном режиме. Создайте новую фигуру и оси.
hFigure = figure();
hAxes = axes('Parent', hFigure);

Разместите оба изображения на одной оси.
hImage1 = imshow(im, 'Parent', hAxes); drawnow; % Ensure the image gets drawn. hold on; hImage2 = imshow(imgray, 'Parent', hAxes); hold off;

Создайте круговую окупаемость инвестиций на осях.
centerLocation = [220, 100]; radius = 60; hC = images.roi.Circle(... 'Parent', hAxes,... 'FaceAlpha',0,... 'Center',centerLocation,... 'Radius', radius);

Создайте прослушиватель, который прослушивает изменения в позиции ROI (круга). В конце этого примера определена функция, выполняющая функцию startAlpha.
addlistener(hC,'MovingROI', @updateAlpha);
Выполнение обратного вызова вручную в первый раз
updateAlpha(hC)

Моделирование увеличения в области.
hC.Parent.XLim = [75 370]; hC.Parent.YLim = [0 205];

Этот файл содержит исходный код функции, реализующей этот инструмент сравнения изображений. Этот код прослушивает два дополнительных события. Когда пользователь вводит клавишу «t/T», чтобы переключить изображение сверху. Код также прослушивает, чтобы колесо прокрутки мыши увеличивало или уменьшало радиус ROI.
edit helperImageComparer

Функция обратного вызова для обновления альфа-слоя при перемещении объекта ROI.
function updateAlpha(hC, ~) hImages = findobj(hC.Parent,'Type','image'); % Create a BW mask from the Circle ROI mask = hC.createMask(hImages(1).CData); % Set the alpha data so that the underlying image shows through % only inside the circle set(hImages(1),'AlphaData', ~mask); end
addlistener | Circle | createMask