7

나는 포인트의 움직임을 기록하는 데 관심이있는 동영상 파일을 가지고 있습니다. 특정 원형 기능의 중심. MATLAB에서 가장자리 감지 및 코너 감지 기술을 사용하여이 작업을 수행하려고합니다.Matlab에서 가장자리 감지 및 코너 감지에 관심 영역 (ROI)을 제공하는 방법은 무엇입니까?

이렇게하려면 비디오에서 관심 영역을 어떻게 지정합니까? 서브 플로트는 좋은 아이디어입니까?

나는 아래와 같이 바이너리 마스크를 사용하여이 작업을 수행 할 수

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

을 시도했지만 그것은 프레임에 적용되는 마스크는 원본 비디오에 대한 좋은 것으로 나타났다. 에지 검출 알고리즘은 바이너리 마스크에 의해 마스킹 된 에지를 검출한다. 다른 기능을 영구히 마스크 처리하고 가장자리 감지를 수행하려면 어떻게합니까?

답변

2

이게 무슨 뜻이야?

BW = poly2mask(c,r,m,n); 
frame = dummy_frame .* BW; 
관련 문제