我怎么能加快模糊边缘检测在视频直播吗?
1视图(30天)
显示旧的评论
祝福所有人。我现在试图实现模糊逻辑边缘检测在视频直播,但速度非常缓慢和当我用精明的方法相比,即使结果是相似的。谁能给我一些建议吗?我的电脑好像是8 gb内存和128 ssd。
% %设置
%创建远程对象
凸轮=摄像头();
videoFrame =快照(cam);
frameSize =大小(videoFrame);
%创建视频播放器对象
放像机= vision.VideoPlayer (“位置”100年[100 frameSize (2) (frameSize (1) + 30)));
% %检测
runLoop = true;
而runLoop
%得到下个视频帧
videoFrame =快照(cam);
%应用模糊边缘检测函数
% fuzzyImage = fuzzyEdgeDetection (videoFrame);
%将输入图像转换为双类型
videoFrameGray = rgb2gray (videoFrame);
videoFrameDouble = im2double (videoFrameGray);
%获得图像梯度
Gx = [1];
Gy = Gx ';
第九= conv2 (videoFrameDouble、Gx“相同”);
Iy = conv2 (videoFrameDouble Gy,“相同”);
%定义模糊推理系统(FIS)
edgeFIS = mamfis (“名字”,“edgeDetection”);
edgeFIS = addInput (edgeFIS [1],“名字”,“九”);
edgeFIS = addInput (edgeFIS [1],“名字”,“Iy”);
sx = 0.1;
sy = 0.1;
% sx和sy指定零隶属函数的标准偏差
% Iy Ix和输入。
edgeFIS = addMF (edgeFIS,“九”,“gaussmf”(sx 0),“名字”,“零”);
edgeFIS = addMF (edgeFIS,“Iy”,“gaussmf”(sy 0),“名字”,“零”);
edgeFIS = addOutput (edgeFIS [0, 1],“名字”,“Iout”);
%指定三角形隶属度函数,白人和黑人,Iout
佤邦= 0.1;
世行= 1;
wc = 1;
英航= 0;
bb = 0;
公元前= 0.7;
edgeFIS = addMF (edgeFIS,“Iout”,“trimf”(wa wb wc),“名字”,“白色”);
edgeFIS = addMF (edgeFIS,“Iout”,“trimf”(ba bb bc),“名字”,“黑”);
%指定FIS的规则
r1 =“如果第九零然后Iy是零Iout是白色的”;
r2 =“如果第九Iy不为零或不为零则Iout黑”;
edgeFIS = addRule (edgeFIS (r1, r2));
edgeFIS.Rules
%评估金融中间人
fuzzyImage = 0(大小(videoFrameDouble));
为2 = 1:尺寸(videoFrameDouble, 1)
fuzzyImage(二世:)= evalfis (edgeFIS, [(Ix (ii,:)); (Iy (ii,:))] ");
结束
videoFrame = mat2gray (fuzzyImage);
%显示视频
步骤(放像机、videoFrame);
%赤是否视频播放器窗口已经关闭
runLoop = isOpen(放像机);
结束
%清理。
清晰的凸轮;
释放(放像机);
谢谢你的时间。