Tôi có một tệp phim, trong đó tôi quan tâm đến việc ghi lại chuyển động của một điểm; trung tâm của một tính năng tròn được cụ thể. Tôi đang cố gắng thực hiện điều này bằng cách sử dụng phát hiện cạnh và kỹ thuật phát hiện góc trong Matlab.Làm thế nào để cung cấp khu vực quan tâm (ROI) cho phát hiện cạnh và phát hiện góc trong Matlab?
Để thực hiện việc này, làm cách nào để chỉ định khu vực ưa thích trong video? Là subplot một ý tưởng tốt?
Tôi đã cố gắng để thực hiện điều này bằng cách sử dụng mặt nạ nhị phân như dưới đây,
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);
nhưng nó chỉ ra rằng mặt nạ áp dụng trên khung là tốt chỉ dành cho các video gốc. Thuật toán phát hiện cạnh phát hiện các cạnh được che bởi mặt nạ nhị phân. Làm thế nào tôi có thể che giấu các tính năng khác vĩnh viễn và thực hiện phát hiện cạnh?