7

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?

risposta

2

È questo che intendi?

BW = poly2mask(c,r,m,n); 
frame = dummy_frame .* BW; 
Problemi correlati