Ho un file di film, nel quale sono interessato a registrare il movimento di un punto; centro di una caratteristica circolare per essere specifico. Sto cercando di eseguire questo utilizzando tecniche di rilevamento dei bordi e di rilevamento degli angoli in Matlab.Come fornire la regione di interesse (ROI) per il rilevamento dei bordi e il rilevamento degli angoli in Matlab?
Per eseguire questa operazione, come specificare una regione di interesse nel video? La sottotrama è una buona idea?
cercavo di eseguire questa utilizzando le maschere binarie come sotto,
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);
ma si scopre che la maschera applicata sul telaio è buono solo per il video originale. L'algoritmo di rilevamento dei bordi rileva i bordi mascherati dalla maschera binaria. Come posso mascherare permanentemente le altre funzioni ed eseguire il rilevamento dei bordi?