MatLabscript lijndetectie: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
<code  style="font-size:18px">
<code  style="font-size:18px">


clear all
clear all<br>
close all
close all<br>
clc
clc<br>
<br>
<br>
%%Loading in the video
%%Loading in the video<br>
videoPlayer = vision.VideoPlayer('Name','Original Image','Position', [100, 200, 400, 400]);
videoPlayer = vision.VideoPlayer('Name','Original Image','Position', [100, 200, 400, 400]);<br>
outputPlayer = vision.VideoPlayer('Name','Threshold','Position',[600,200, 400, 400]);
outputPlayer = vision.VideoPlayer('Name','Threshold','Position',[600,200, 400, 400]);<br>
outputPlayer2 = vision.VideoPlayer('Name','Skeleton','Position',[1100,200, 400, 400]);
outputPlayer2 = vision.VideoPlayer('Name','Skeleton','Position',[1100,200, 400, 400]);<br>
release(outputPlayer); release(videoPlayer);
release(outputPlayer); release(videoPlayer);<br>
nr=0;
nr=0;
videoReader = vision.VideoFileReader('topcamvideo.avi');
videoReader = vision.VideoFileReader('topcamvideo.avi');

Revision as of 12:57, 14 January 2016

clear all
close all
clc

%%Loading in the video
videoPlayer = vision.VideoPlayer('Name','Original Image','Position', [100, 200, 400, 400]);
outputPlayer = vision.VideoPlayer('Name','Threshold','Position',[600,200, 400, 400]);
outputPlayer2 = vision.VideoPlayer('Name','Skeleton','Position',[1100,200, 400, 400]);
release(outputPlayer); release(videoPlayer);
nr=0; videoReader = vision.VideoFileReader('topcamvideo.avi'); % outputPlayer = vision.outputPlayer

while isOpen(videoPlayer) || nr==0

   frame = step(videoReader);
   frame = rgb2gray(frame);    %Converting to black and white (single matrix)
   step(videoPlayer,frame)
   videoPlayer.step(frame)


%%Threshold % Filters the image, above a certain threshold will become 1 (white), below % the threshold will become 0 (black).

   bin_img=im2bw(frame, 0.3);  %Creating a binary image [original, value]
   bin_img=imopen(bin_img,strel('square',3));    % image opening
   bin_img=imclose(bin_img,strel('square',5));     % image closing
   outputPlayer.step(bin_img)
   step(outputPlayer,bin_img)
   

%%Skeleton function (was not used, but could be useful) % Filters the image, creates an medial axis (hartlijn) at every point of % the blob. The middle pixels of the thick lines remain white.

   skel_img=bwmorph(bin_img,'skel',15);
   hor_skel_img=imopen(skel_img,strel('line',5,0));        %Filtering out horizontal lines [minlength,angle]
   hor_skel_img=imclose(hor_skel_img,strel('disk',5));   
   ver_skel_img=imopen(skel_img,strel('line',5,90));       %Filtering out vertical lines [minlength,angle]
   ver_skel_img=imclose(ver_skel_img,strel('disk',5));
   skel_img=hor_skel_img+ver_skel_img;                     %Adding horizontal + vertical

% skel_img=imdilate(skel_img,strel('disk',9)); % skel_img=imerode(skel_img,strel('disk',5));

     
outputPlayer2.step(skel_img) step(outputPlayer2,skel_img)
nr=nr+1;

end videoPlayer.hide(); outputPlayer.hide(); outputPlayer2.hide(); close all;