MatLabscript lijndetectie: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
No edit summary
No edit summary
Line 16: Line 16:
<br>
<br>
while isOpen(videoPlayer) || nr==0
while isOpen(videoPlayer) || nr==0
    frame = step(videoReader);
frame = step(videoReader);
    frame = rgb2gray(frame);    %Converting to black and white (single matrix)
frame = rgb2gray(frame);    %Converting to black and white (single matrix)
    step(videoPlayer,frame)
step(videoPlayer,frame)
    videoPlayer.step(frame)
videoPlayer.step(frame)
<br>
<br>
%%Threshold     
%%Threshold     
% Filters the image, above a certain threshold will become 1 (white), below
% Filters the image, above a certain threshold will become 1 (white), below
% the threshold will become 0 (black).
% the threshold will become 0 (black).
    bin_img=im2bw(frame, 0.3);  %Creating a binary image [original, value]
bin_img=im2bw(frame, 0.3);  %Creating a binary image [original, value]
    bin_img=imopen(bin_img,strel('square',3));    % image opening
bin_img=imopen(bin_img,strel('square',3));    % image opening
    bin_img=imclose(bin_img,strel('square',5));    % image closing
bin_img=imclose(bin_img,strel('square',5));    % image closing
    outputPlayer.step(bin_img)
outputPlayer.step(bin_img)
    step(outputPlayer,bin_img)
step(outputPlayer,bin_img)
    <br>
<br>
%%Skeleton function (was not used, but could be useful)
%%Skeleton function (was not used, but could be useful)
% Filters the image, creates an medial axis (hartlijn) at every point of
% Filters the image, creates an medial axis (hartlijn) at every point of
% the blob. The middle pixels of the thick lines remain white.
% the blob. The middle pixels of the thick lines remain white.
    skel_img=bwmorph(bin_img,'skel',15);
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=imopen(skel_img,strel('line',5,0));        %Filtering out horizontal lines [minlength,angle]
    hor_skel_img=imclose(hor_skel_img,strel('disk',5));   
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=imopen(skel_img,strel('line',5,90));      %Filtering out vertical lines [minlength,angle]
    ver_skel_img=imclose(ver_skel_img,strel('disk',5));
ver_skel_img=imclose(ver_skel_img,strel('disk',5));
    skel_img=hor_skel_img+ver_skel_img;                    %Adding horizontal + vertical
skel_img=hor_skel_img+ver_skel_img;                    %Adding horizontal + vertical
%    skel_img=imdilate(skel_img,strel('disk',9));
%    skel_img=imdilate(skel_img,strel('disk',9));
%    skel_img=imerode(skel_img,strel('disk',5));
%    skel_img=imerode(skel_img,strel('disk',5));
      <br>
<br>
    outputPlayer2.step(skel_img)
outputPlayer2.step(skel_img)
    step(outputPlayer2,skel_img)
step(outputPlayer2,skel_img)
    <br>
<br>
    nr=nr+1;
nr=nr+1;
end
end
videoPlayer.hide(); outputPlayer.hide(); outputPlayer2.hide();
videoPlayer.hide(); outputPlayer.hide(); outputPlayer2.hide();
close all;
close all;
</code>
</code>

Revision as of 12:52, 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;