Этот пример показывает, как захватывать потоковые изображения из устройства получения изображений, выполнять оперативную обработку изображений на каждой системе координат и отображать обработанные системы координат.
Результатом является альфа-смесь двух изображений, один стационарный маятник, другой маятник в движении, что делает движущиеся функции прозрачными.
Логгирование и отображение снимка фона без движущихся функций.
% Access an image acquisition device. vidobj = videoinput('winvideo', 1, 'RGB24_320X240'); % Using the preview window, properly position the camera. preview(vidobj) pause(1) % Capture an image with no moving features. background = getsnapshot(vidobj); % Convert the background from uint8 to double. background = double(background)/255; % Display the background image in a figure window. imagesc(background);
Используя полученные данные изображения, выполните оперативную обработку изображения и отобразите обработанные изображения в окне рисунка.
Для каждой потоковой системы координат изображения вычислите линейную комбинацию между этой системой координат и фоновым изображением. Линейная комбинация эффективно альфа смешивает два изображения, поэтому любые движущиеся функции кажутся прозрачными.
% Set the object into motion. pause(2); % Configure the figure to produce flash-free rendering. fig = gcf; fig.DoubleBuffer' = 'on'; % Configure the acquisition. vidobj.FramesPerTrigger = 20; % Start the acquisition. start(vidobj) % While logging data, perform a linear combination between % the current and background images. current = getdata(vidobj, 1, 'double'); transparent = (current * 0.5) + (background * 0.5); % Display the processed image. imagesc(transparent);
% Repeat for all remaining images. while (vidobj.FramesAvailable > 0), % Perform a linear combination between the current and background images. current = getdata(vidobj, 1, 'double'); transparent = (current * 0.5) + (background * 0.5); % Display the processed image. imagesc(transparent); end
% Once the video input object is no longer needed, delete % it and clear it from the workspace. delete(vidobj) clear vidobj