Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中为边缘检测和角点检测提供感兴趣区域(ROI)?_Matlab_Image Processing_Computer Vision_Video Processing_Matlab Cvst - Fatal编程技术网

如何在Matlab中为边缘检测和角点检测提供感兴趣区域(ROI)?

如何在Matlab中为边缘检测和角点检测提供感兴趣区域(ROI)?,matlab,image-processing,computer-vision,video-processing,matlab-cvst,Matlab,Image Processing,Computer Vision,Video Processing,Matlab Cvst,我有一个电影文件,我对记录点的运动感兴趣;要指定的圆形特征的中心。我试图在Matlab中使用边缘检测和角点检测技术来实现这一点 要执行此操作,如何在视频中指定感兴趣的区域?子地块是个好主意吗 我试着使用如下的二进制掩码来执行此操作 hVideoSrc = vision.VideoFileReader('video.avi','ImageColorSpace', 'Intensity'); hEdge = vision.EdgeDetector('Method', 'Prewitt','Thres

我有一个电影文件,我对记录点的运动感兴趣;要指定的圆形特征的中心。我试图在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);
但事实证明,应用在帧上的遮罩仅适用于原始视频。边缘检测算法检测被二值遮罩的边缘。如何永久屏蔽其他功能并执行边缘检测?

这就是您的意思吗

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