赞
踩
原理:文本行具有一定的纹理信息,通过傅里叶变换后在频域中会凸显出来。
适用范围:二位傅里叶变化法倾斜校正需要有明显的频域信息时才能生效。为得到更显著的频域特征,在使用时一般会先对文档图像的的二值化图像进行文本区域融合。但是对于文档中文字稀疏,频域特征不明显的文档该方法会失效。该方法能弥补文本行投影法在短文本倾斜矫正时的不足:短文本,尤其是文本行存在错行时,使用投影法难以对倾斜文档图像进行校正,二维傅里叶变换法采用全局信息进行倾斜矫正,能得到较为理想的结果,但是当背景纹理过于突出时也会失效,所以建议先截取文档图像中的关键区域再进行倾斜校正。
#include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <vector> #include <numeric> #define MY_SKEW 14 //图像旋转1:旋转(截取图像)Crop // Mat img :图像输入,单通道或者三通道 // Mat & imgout :图像输出 // int degree :图像要旋转的角度 // int border_value:图像旋转填充值 int rotateImage1(Mat img,Mat & imgout, int degree,int border_value) { if( img.empty()) return 1; degree = -degree;//warpAffine默认的旋转方向是逆时针,所以加负号表示转化为顺时针 double angle = degree * CV_PI / 180.; // 弧度 double a = sin(angle), b = cos(angle); int width = img.cols; int height = img.rows; int width_rotate = int(width * fabs(b)-height * fabs(a));//height * fabs(a) + int height_rotate = int(height * fabs(b)-width * fabs(a));//width * fabs(a) + if(width_rotate<=20||height_rotate<=20) { width_rotate = 20; height_rotate = 20; } //旋转数组map // [ m0 m1 m2 ] ===> [ A11 A12 b1 ] // [ m3 m4 m5 ] ===> [ A21 A22 b2 ] float map[6]; Mat map_matrix = Mat(2, 3, CV_32F, map); // 旋转中心 CvPoint2D32f center = cvPoint2D32f(width / 2, height / 2); CvMat map_matrix2 = map_matrix; cv2DRotationMatrix(center, degree, 1.0, &map_matrix2);//计算二维旋转的仿射变换矩阵 map[2] += (width_rotate - width) / 2; map[5] += (height_rotate - height) / 2; //Mat img_rotate; //对图像做仿射变换 //CV_WARP_FILL_OUTLIERS - 填充所有输出图像的象素。 //如果部分象素落在输入图像的边界外,那么它们的值设定为 fillval. //CV_WARP_INVERSE_MAP - 指定 map_matrix 是输出图像到输入图像的反变换, int chnnel =img.channels(); if(chnnel == 3) warpAffine(img, imgout, map_matrix, Size(width_rotate, height_rotate), 1, 0, Scalar(border_value,border_value,border_value)); else warpAffine(img, imgout, map_matrix, Size(width_rotate, height_rotate), 1, 0, border_value); return 0; } //图像旋转2:扩充图像边缘full // Mat img :图像输入,单通道或者三通道 // Mat & imgout :图像输出 // int degree :图像要旋转的角度 // int border_value:图像旋转填充值 int rotateImage2(Mat img,Mat & imgout, int degree,int border_value) { if
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。