7

ポイントの動きを記録することに興味があるムービーファイルがあります。具体的には、円形フィーチャの中心。Matlabのエッジ検出とコーナー検出の手法を使用してこれを実行しようとしています。

これを実行するには、ビデオで関心のある領域を指定するにはどうすればよいですか?サブプロットは良い考えですか?

私は以下のようにバイナリマスクを使用してこれを実行しようとしていました、

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

しかし、フレームに適用されたマスクは、元のビデオにのみ有効であることがわかりました。エッジ検出アルゴリズムは、バイナリマスクによってマスクされているエッジを検出します。他の機能を永続的にマスクしてエッジ検出を実行するにはどうすればよいですか?

4

1 に答える 1

2

これはどういう意味ですか?

BW = poly2mask(c,r,m,n);
frame = dummy_frame .* BW;
于 2011-11-30T11:37:11.113 に答える