Mam plik filmowy, w którym jestem zainteresowany rejestrowaniem ruchu punktu; środek okrągłej cechy, która ma być specyficzna. Próbuję wykonać to za pomocą technik wykrywania krawędzi i wykrywania naroży w programie Matlab.Jak zapewnić region zainteresowania (ROI) do wykrywania krawędzi i wykrywania naroży w programie Matlab?
Aby to zrobić, w jaki sposób określić region zainteresowania wideo? Czy subplot to dobry pomysł?
starałem się wykonać to za pomocą masek binarnych jak poniżej,
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);
ale okazuje się, że maska nakładana na ramie jest dobre tylko do oryginalnego wideo. Algorytm wykrywania krawędzi wykrywa krawędzie, które są zamaskowane przez maskę binarną. Jak mogę trwale zamaskować inne funkcje i przeprowadzić wykrywanie krawędzi?