Ich habe eine Filmdatei, in der ich die Bewegung eines Punktes aufzeichnen möchte; Mittelpunkt eines kreisförmigen Merkmals, um genau zu sein. Ich versuche dies mit Kantenerkennung und Eckenerkennung in Matlab zu erreichen.Wie wird die Region von Interesse (ROI) für Kantenerkennung und Eckenerkennung in Matlab bereitgestellt?
Um dies zu tun, wie definiere ich eine Region von Interesse in dem Video? Ist Subplot eine gute Idee?
Ich habe versucht, diese mit den binären Masken wie unten,
hVideoSrc = vision.VideoFileReader('video.avi','ImageColorSpace', 'Intensity');
hEdge = vision.EdgeDetector('Method', 'Prewitt','ThresholdSource', 'Property','Threshold', 15/256, 'EdgeThinning', true);
hAB = vision.AlphaBlender('Operation', 'Highlight selected pixels');
WindowSize = [190 150];
hVideoOrig = vision.VideoPlayer('Name', 'Original');
hVideoOrig.Position = [10 hVideoOrig.Position(2) WindowSize];
hVideoEdges = vision.VideoPlayer('Name', 'Edges');
hVideoEdges.Position = [210 hVideoOrig.Position(2) WindowSize];
hVideoOverlay = vision.VideoPlayer('Name', 'Overlay');
hVideoOverlay.Position = [410 hVideoOrig.Position(2) WindowSize];
c = [123 123 170 170];
r = [160 210 210 160];
m = 480; % height of pout image
n = 720; % width of pout image
BW = ~poly2mask(c,r,m,n);
while ~isDone(hVideoSrc)
dummy_frame = step(hVideoSrc) > 0.5; % Read input video
frame = dummy_frame-BW;
edges = step(hEdge, frame);
composite = step(hAB, frame, edges); % AlphaBlender
step(hVideoOrig, frame); % Display original
step(hVideoEdges, edges); % Display edges
step(hVideoOverlay, composite); % Display edges overlayed
end
release(hVideoSrc);
durchzuführen, aber es stellt sich heraus, dass die Maske auf den Rahmen für das ursprüngliche Video nur gut angelegt ist. Der Kantenerkennungsalgorithmus erkennt die Kanten, die durch die binäre Maske maskiert werden. Wie kann ich andere Features dauerhaft maskieren und Kanten erkennen?