exponenta event banner

Создать инструмент сравнения изображений с помощью ROI

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

Считывание образца изображения в рабочую область

Прочитайте образец изображения в рабочей области, а затем создайте версию изображения в градациях серого. Используйте 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

См. также

| |

Связанные темы