我正在尝试从图像中检测屏幕边框(需要4个角)。 这是图片:
我使用HOUGH变换来检测线条和交叉点(黑色圆圈),这就是结果:
现在我需要找到4个角或4个线......所有可以帮助我裁剪图像的东西,我该怎么办? 也许使用屏幕宽高比?但怎么样? 我正在使用Matlab。
感谢。
答案 0 :(得分:0)
当且仅当您具有相同的图像条件(背景和笔记本电脑)时,一种天真的第一种方法可以做到这一点。
查看快速结果: 这是与原始图像部分相同的蒙版,使其通过蒙版:
以下是执行此操作的代码:
img = imread( 'imagename.jpg'); % change the image name
hsv = rgb2hsv( img);
mask = hsv(:,:,2)>0.25 & hsv(:,:,3)>0.5;
strel_size = round(0.025*max(size(mask)));
dilated_mask=imdilate(mask,strel('square',strel_size));
s=regionprops(dilated_mask,'BoundingBox','ConvexHull');
% here Bounding box produces a box with the minimum-maximum white pixel positions but the image is not actually rectangular due to perspective...
imshow(uint8(img.*repmat(dilated_mask,[1 1 3])));
line(s.ConvexHull(:,1),s.ConvexHull(:,2),'Color','red','LineWidth',3);
当然,您可以应用一些更复杂的处理来更准确,并将凸包校正为具有透视的矩形形状,但这仅仅是为了展示该方法的5分钟尝试...