Как изменить цвет в отслеживании объектов

Это пример кода Matlab от Arindam Bose для отслеживания красных объектов. Я немного изменил этот код, чтобы отслеживать объекты из видеопотока. Первоначально это было для отслеживания красных объектов с камеры.

http://www.mathworks.com/matlabcentral/fileexchange/28757-tracking-red-color-objects-using-matlab

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

Может быть, именно эта строка кода отвечает за изменение цвета?

diffFrame = imsubtract(rgbFrame(:,:,1), rgb2gray(rgbFrame)); % Get red component of the image

или же

Я тоже изменил порог, но безуспешно

redThresh = 0.15; % Threshold for red detection

Но не знаю, как изменить цвет объекта на зеленый или другой цвет.

Спасибо за любое предложение.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Program Name : Red Object Detection and Tracking
% Author : Arindam Bose
% Version : 1.05
% Description : How to detect and track red objects in Live Video
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Initialization
redThresh = 0.15; % Threshold for red detection

%vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', ... % Acquire input video stream
%'ROI', [1 1 640 480], ...
%'ReturnedColorSpace', 'rgb');

vidInfo = VideoReader('MyVideo.avi');
videoResult = VideoWriter('C:\MyProject\Y_Videos\ResultVideo.avi');  % Finales Video mit Koordinaten der roten Blobs 
open(videoResult); % Öffne finales Video 

% vidInfo = readframe(video); % Acquire input video property

hblob = vision.BlobAnalysis('AreaOutputPort', false, ... % Set blob analysis handling
'CentroidOutputPort', true, ...
'BoundingBoxOutputPort', true', ...
'MinimumBlobArea', 10, ...
'MaximumBlobArea', 950, ...
'MaximumCount', 30);
hshapeinsRedBox = vision.ShapeInserter('BorderColor', 'Custom', ... % Set Red box handling
'CustomBorderColor', [255 255 255], ...
'Fill', true, ...
'FillColor', 'Custom', ...
'CustomFillColor', [0 0 0], ...
'Opacity', 0.3);
htextins = vision.TextInserter('Text', 'Red Objects: %2d', ... % Set text for number of blobs
'Location', [7 2], ...
'Color', [255 255 255], ... // red color
'FontSize', 14);
htextinsCent = vision.TextInserter('Text', '+ X:%4d, Y:%4d', ... % set text for centroid
'LocationSource', 'Input port', ...
'Color', [255 255 255], ... // white color
'FontSize', 14);

hVideoIn = vision.VideoPlayer('Name', 'Final Video', ... % Output video player
'Position', [100 100 610 500]);
nFrame = 0; % Frame number initialization
%% Processing Loop
while(nFrame < 500)
rgbFrame = readFrame(vidInfo);
%rgbFrame = step(vidDevice); % Acquire single frame
%rgbFrame = flip(rgbFrame,2); % obtain the mirror image for displaying
diffFrame = imsubtract(rgbFrame(:,:,1), rgb2gray(rgbFrame)); % Get red component of the image
diffFrame = medfilt2(diffFrame, [3 3]); % Filter out the noise by using median filter
binFrame = im2bw(diffFrame, redThresh); % Convert the image into binary image with the red objects as white
[centroid, bbox] = step(hblob, binFrame); % Get the centroids and bounding boxes of the blobs
centroid = uint16(centroid); % Convert the centroids into Integer for further steps
rgbFrame(1:20,1:165,:) = 100; % put a black region on the output stream
vidIn = step(hshapeinsRedBox, rgbFrame, bbox); % Instert the red box

for object = 1:1:length(bbox(:,1)) % Write the corresponding centroids
centX = centroid(object,1); 
centY = centroid(object,2);
vidIn = step(htextinsCent, vidIn, [centX centY], [centX-6 centY-9]);
end
vidIn = step(htextins, vidIn, uint8(length(bbox(:,1)))); % Count the number of blobs
step(hVideoIn, vidIn); % Output video stream

writeVideo(videoResult,vidIn)

nFrame = nFrame+1;
end

%% Clearing Memory
release(hVideoIn); % Release all memory and buffer used
%% release(vidDevice);
%%clear all;
close(videoResult);

clc;

1 ответ

Ваше предположение верно. Цветные изображения n x m x 3 матрицы, так img(:,:,1) это красный канал, img(:,:,2) зеленый и img(:,:,3) синенький.

Другие вопросы по тегам