7

Bir noktanın hareketini kaydetmekle ilgilendiğim bir film dosyası var; özel olması için dairesel bir özellik merkezi. Matlab'da kenar algılama ve köşe algılama teknikleri kullanarak bunu yapmaya çalışıyorum.Matlab'da kenar algılama ve köşe algılama için ilgi bölgesi (ROI) nasıl sağlanır?

Bunu yapmak için, videodaki bir ilgi alanını nasıl belirleyebilirim? Altpip iyi bir fikir mi?

Ben, aşağıda ikili maskeler kullanarak bu gerçekleştirmek için

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); 

çalışıyordu ama çerçeve üzerinde uygulanan maske sadece orijinal video için iyi olduğu ortaya çıktı. Kenar algılama algoritması, ikili maske tarafından maskelenen kenarları algılar. Diğer özellikleri kalıcı olarak nasıl gizleyebilirim ve kenar algılamayı nasıl yapabilirim?

cevap

2

Bu ne demek istiyorsun?

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