我有一个焊接程序的视频,每个框架我需要采取焊接区域的所有轮廓,并检测所有边缘。 不幸的是,我得到的图像不是最好的质量,我试图放置几个滤镜并使图像增强,但它不能用于锐利边缘。
下图:
我设法制作了以下代码,但结果非常糟糕。
clc
clear all
vid = VideoReader('home/simulation/V6_008.avi');
h=ones(3,3)/9;
for i=1 : mov.NumberOfFrames
thisframe = read(vid,i);
g = image(thisframe);
lsave = sprintf('image.jpg');
saveas(g, lsave, 'jpg')
a = imread(lsave);
a1 = imcrop(a,[150 450 650 300]);
a2= imsharpen(a1,'Radius',50,'Amount',500);
b = rgb2gray(a2);
c=imadjust(b,[0.6 0.8],[]);
c1= imfilter(c,h);
c2=adapthisteq(c1,'cliplimit',0.01,'Distribution','exponential');
d = edge(c1,'canny',0.1);
e=bwareaopen(d,50);
imshow(e) end
这些过滤器和图像增强有一点帮助,但我的测量仍然没有。
所以我有两个问题:
1)你知道我可以用什么其他工具来清理边缘检测吗?我只想概述你所看到的指定区域。
2)我需要对每一帧进行边缘检测,然后保存所有帧,并在边缘检测后保存视频。我真的不知道怎么做。你呢?
非常感谢你们,如果它令人困惑,我道歉。 我担心如果我没有完成这个,我会非常困扰.. :(。 再次感谢,我赞不绝口!
这是边缘检测后理想情况下的边缘: