MatLabscript lijndetectie: Difference between revisions
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<br> | clear all<br> | ||
close all<br> | close all<br> | ||
clc<br> | clc<br> | ||
<br> | <br> | ||
%%Loading in the video<br> | %%Loading in the video<br> | ||
videoPlayer = vision.VideoPlayer('Name','Original Image','Position', [100, 200, 400, 400]);<br> | videoPlayer = vision.VideoPlayer('Name','Original Image','Position', [100, 200, 400, 400]);<br> | ||
outputPlayer = vision.VideoPlayer('Name','Threshold','Position',[600,200, 400, 400]);<br> | outputPlayer = vision.VideoPlayer('Name','Threshold','Position',[600,200, 400, 400]);<br> | ||
outputPlayer2 = vision.VideoPlayer('Name','Skeleton','Position',[1100,200, 400, 400]);<br> | outputPlayer2 = vision.VideoPlayer('Name','Skeleton','Position',[1100,200, 400, 400]);<br> | ||
release(outputPlayer); release(videoPlayer);<br> | release(outputPlayer); release(videoPlayer);<br> | ||
nr=0;<br> | nr=0;<br> | ||
videoReader = vision.VideoFileReader('topcamvideo.avi');<br> | videoReader = vision.VideoFileReader('topcamvideo.avi');<br> | ||
% outputPlayer = vision.outputPlayer | % outputPlayer = vision.outputPlayer | ||
<br> | <br> | ||
<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 <br> | %%Threshold <br> | ||
% Filters the image, above a certain threshold will become 1 (white), below<br> | % Filters the image, above a certain threshold will become 1 (white), below<br> | ||
% the threshold will become 0 (black).<br> | % the threshold will become 0 (black).<br> | ||
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 | ||
Line 30: | Line 30: | ||
step(outputPlayer,bin_img) | step(outputPlayer,bin_img) | ||
<br> | <br> | ||
%%Skeleton function (was not used, but could be useful)<br> | %%Skeleton function (was not used, but could be useful)<br> | ||
% Filters the image, creates an medial axis (hartlijn) at every point of<br> | % Filters the image, creates an medial axis (hartlijn) at every point of<br> | ||
% the blob. The middle pixels of the thick lines remain white.<br> | % the blob. The middle pixels of the thick lines remain white.<br> | ||
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] | ||
Line 39: | Line 39: | ||
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));<br> | % skel_img=imdilate(skel_img,strel('disk',9));<br> | ||
% skel_img=imerode(skel_img,strel('disk',5));<br> | % skel_img=imerode(skel_img,strel('disk',5));<br> | ||
<br> | <br> | ||
outputPlayer2.step(skel_img) | outputPlayer2.step(skel_img) | ||
Line 46: | Line 46: | ||
<br> | <br> | ||
nr=nr+1; | nr=nr+1; | ||
end<br> | end<br> | ||
videoPlayer.hide(); outputPlayer.hide(); outputPlayer2.hide();<br> | videoPlayer.hide(); outputPlayer.hide(); outputPlayer2.hide();<br> | ||
close all; | close all; | ||
</code> | </code> | ||
---- | |||
Terug naar: [[PRE2015_2_Groep2]] |
Revision as of 21:02, 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;
Terug naar: PRE2015_2_Groep2