利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx

上传人:b****1 文档编号:5892939 上传时间:2023-05-05 格式:DOCX 页数:15 大小:1.83MB
下载 相关 举报
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第1页
第1页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第2页
第2页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第3页
第3页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第4页
第4页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第5页
第5页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第6页
第6页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第7页
第7页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第8页
第8页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第9页
第9页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第10页
第10页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第11页
第11页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第12页
第12页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第13页
第13页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第14页
第14页 / 共15页
利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx

《利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx(15页珍藏版)》请在冰点文库上搜索。

利用OpenCV检测图像中长方形画布或纸张并提取图像内容Word格式文档下载.docx

具体步骤如下:

1)将标注好的四个点坐标存入一个叫corner的变量里,比如上面的例子中,原图的分辨率是300x400,概念x和y的方向如下:

那么纸张的四角对应的坐标别离是:

 

把这四个坐标按如上顺序放到一个叫corner的变量里。

若是咱们打算把这幅图案恢复到一个300x400的图像里,那么依照对应的顺序把下面四个坐标放到一个叫canvas的变量里:

左上:

0,0

右上:

300,0

右下:

300,400

左下:

0,400

假设原图已经用OpenCV读取到一个叫image的变量里,那么提取纸张图案的代码如下:

1M=cv2.getPerspectiveTransform(corners,canvas)2result=cv2.warpPerspective(image,M,(0,0))

把左图剪裁出来,去掉红点后试了试,结果如下:

固然,其实这一步用Photoshop就能够够了。

纸张四角的坐标未知或难以准确标注的情形

这种场景可能是小屏幕应用,或是原始图像就很小,比如我那个地址用的那个300x400例子,点坐标很难精准标注。

这种情形下一个思路是,用边缘检测提取纸张四边,然后求出四角坐标,再做PerspectiveTransform。

1)图像预处置

一样而言即便做一般的边缘检测也需要提早对图像进行降噪幸免误测,比如最多见的方法是先对图像进行高斯滤波,但是如此也会致使图像变得模糊,当待检测图形边缘不明显,或是图像本身分辨率不高的情形下(比如本文用的例子),会在降噪的同时把待检测的边缘强度也给捐躯了。

具体到本文的例子,纸张是白色,背景是浅黄带纹路,若是进行高斯滤波是显然不行的,这时一个替代方案是能够考虑利用MeanShift,MeanShift的优势就在于若是是像背景桌面的浅色纹理,图像分割的进程中相当于将这些小的浮动过滤掉,而且保留相对明显的纸张边缘,结果如下:

原图

处置后

Meanshift的代码:

1image=cv2.pyrMeanShiftFiltering(image,25,10)

因为要紧目的是预处置降噪,windowssize和colordistance都不用太大,幸免浪费计算时刻还有过度降噪。

降噪后能够看到桌面上的纹理都被抹去了,纸张边缘周围干净了很多。

但是这还远远不够,图案本身,和图像里的其他物体都有很多明显的边缘,而且都是直线边缘。

2)纸张边缘检测

尽管降噪了,可是图像里仍是有很多边缘明显的元素。

怎么尽可能只保留纸张的边缘呢,这时能够考虑用分割算法,把图像分为纸张部份和其他部份,如此分割的mask边缘就和纸张边缘应该是差不多重合的。

在那个地址能够考虑用GrabCut,如此关于简单的情形,比如纸张或画布和背景对照强烈的,直接把图像边缘的像素作为boundingbox就能够够实现自动分割。

当自动分割不精准的情形下再引入手动辅助分割,具体到我那个地址用的例子,背景和画面接近,因此需要手动辅助:

结果如下:

能够看到,分割后的结果尽管能大体区分纸张形状了,可是边缘并非准确,另外键盘和部份桌面没能区分开来。

这时能够继续用GrabCut+手动标注取得只有纸张的分割。

或为了用户友好的话,尽可能少引入手动辅助,那么能够考虑先继续到下一步检测边缘,再做后期处置。

假设咱们考虑后者,那么咱们取得的是如下的mask:

那个mask并非精准,因此不能直接用于边缘检测,可是它大致标出了图片里最明显的边缘位置所在,因此能够考虑下面的思路:

保留降噪后位于mask边缘周围的信息用于真正的边缘检测,而把其他部份都模糊处置,也确实是说基于上面取得的mask做出下面的mask用于模糊处置:

基于那个mask取得的用于边缘检测的图像如下:

用canny算子检测出边缘如下:

3)直线检测

对检测到的边缘利用Hough变换检测直线,我例子里用的是cv2.HoughLinesP,分辨率1像素和1°

,能够依照图像大小设置检测的阈值和minLineLength去除大部份误检测。

专门提一下的是若是利用OpenCV的Pythonbinding,OpenCV2和OpenCV3的结果结构是不一样的,若是进行代码移植需要相应的修改。

检测到的结果如下:

能够看到,有些线几乎重合在一路了,这是难以幸免的,上图中一共检测到9条线,其中两对(下、右边缘)重合。

能够通过距离判定和直线相对角度来判定并把重合线段合为一条:

剩下的都是没有重合的线了。

4)判定纸张边缘

那么如何选取纸张边缘的四条线呢(即便图像分割步骤超级好得分开了纸张和其他部份,这在有些情形下仍是难以幸免的,比如图案里有和边缘平行的线条),能够沿着提取线段的两边采样像素的灰度:

在线段的两个端点之间平均采样左右两边像素的值,因为一样来讲若是是纸张或画布,边缘和背景的颜色在四边上应该都是类似的。

但是如此做的话引入另外一个问题是需要区分线段的“左”和“右”,关于线段本身而言确实是要区分前后。

因此需要对画面里所有的线段端点进行排序,而那个排序的基准确实是相对画布。

具体到本文的例子确实是把图像中心概念为所有线段的“左”边,如上图。

而决定线段端点“前”和“后”能够用如下方法:

先假设线段的前后端点,将两个端点坐标别离减去中心点(红点)的坐标,然后将取得的两个向量a和b求叉积,若是叉积大于0那么说明假设正确,若是<

0那么互换假设的前后端点。

线段端点的顺序确信后就能够够进行采样了,简单起见能够别离采样左右双侧的像素灰度值,若是希望更准确能够采样RGB通道的值进行综合比较,下面是7条线段对应的双侧像素灰度的中值散布:

能够看到其中有4个点距离超级近(红色),说明他们的像素灰度散布也很接近,把这4条选出来,结果如下:

正是要的结果。

5)计算四角的坐标

接下来计算四条线的交点,方式点。

因为有4条线,会取得6个结果,因为在这种应用处景中,方形的物体在透视变换下可不能显现凹角,因此直接舍弃离纸张中心最远的两个交点就取得了四个角的坐标,结果如下:

如此就回到了一开始四角坐标已经取得的情形,直接进行透视变换就好了。

CameraCalibration?

写了这么多,其实有一条相当重要的假设,乃至能够说是最关键的步骤之一我一直没提,那确实是CameraCalibration,若是有相机的情形下,metadata都明白,那么需要先坐CameraCalibration才能明白纸张或画布的原始尺寸。

我那个地址试的例子固然是没有的,也能够有,相应的算法OpenCV里也有现成的,只是即便如此仍是超级麻烦,因此我的所有流程都是默许原始尺寸已经取得了。

再说了,就算没有,变换回方形以后利用者凭感觉进行简单轴缩放都比CameraCalibration方便得多。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2