目的:扣取出证件阅读器上红外去背景图片中的卡证数据
1.图像resize
目的:缩小图像尺寸,可以加快图像处理时间
2.转成灰度图
3. 进行二值化处理(涉及到阈值调整)
4.进行开运算
目的:开运算是指先腐蚀后膨胀的操作,功能:开运算可以用来消除亮度较高的细小区域,在纤细处分离物体
5.中值滤波
目的:去除椒盐噪声
6.均值模糊
目的:去随机噪声有很好的去噪效果
7.进行sobel算子计算
目的:找到图像的边缘信息
8.进行轮廓寻找
9.寻找轮廓对应的凸包
10.通过条件来挑选满足的要求的凸包
条件一:凸包为四边形
条件二:凸包的最小外界矩的宽高要满足一定条件,太小的可能是噪声(涉及到阈值调整)
条件三:凸包四条边的内角要在90度左右(涉及到角度阈值设定)
11.对图中多凸包进行合并(涉及到重叠面积阈值设定)
12.对结果进行是否是凸包的判定
13.对边缘进行像素级别的修正(原图没有压缩,效果最好,压缩有会有一定的偏差:如压缩了了5倍,就会存在5个像素的偏差)
流程1:求得四边形四个坐标点(左上点开始,顺时针排序的四个坐标点)组成的四条直线
流程2:取每条线段的三个中间点,上下两条直线,对x等距离获得三个横坐标点(x0_25,x0_5,x0_75),并计算对应的三个y值(y0_25,y0_5,y0_75);左右两条直线,对y等距离获得三个y坐标点(y0_25,y0_5,y0_75),并计算对应的三个x坐标值;
流程3:根据以上三对像素点进行遍历,找到二值图的像素边界,获取对应坐标共3组
流程4:根据流程3中得到的坐标,相邻3点获得2条直线,进行阈值判断,确定最终的边界直线
流程5:根据直线相交获得角点,确定新的边界直线与相邻直线相交的坐标点,更新凸包坐标点确定的直线;
14.绘制结果并展示
下图是没有进行凸包查重操作的结果图
下图是 对边缘进行像素级别的修正的中间结果图
下图是最终结果: