由于最近要制作一个训练集,需要一些图像方面的知识,于是就今天抽了一会儿功夫去学习了图像的几何变换以及阈值分割
几何变换
一般分为外插和内插
我这里一般是默认的内插INTER_LINEAR
1.缩放
void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR );
dsize 不为0时,fx,fy均为0;
dsize为0时,fx,fy均不为0;
2.平移
T=[1 0 tx
0 1 ty]
Mat M1 = (Mat_<double>(2, 3) << 1, 0, tx, 0, 1, ty);
利用上式构造矩阵
warpAffine(src, dst2, M1, src.size());
利用这个函数进行矩阵的运算,输出为dst2,最后一个参数为图像的大小(后面的很多都基于这种,只是矩阵因子变化)
3.旋转
Mat M2 = getRotationMatrix2D(Point2d(src.cols / 2, src.rows / 2), 45, 1);
利用这个进行构造旋转矩阵,之后利用warp Affine()函数即可
4.倾斜
Th=[1 cot(angle) 0
0 1 0](水平方向
Ty=[1 0 0
cot(angle) 1 0](垂直方向)
5.反射
Th=[-1 0 tx tx:图像的列数(即长度)
0 1 0]
Th=[1 0 0 tx:图像的行数(即宽度)
0 -1 ty]
T=[-1 0 tx
0 -1 ty]
几何变化大致就先看了这么多,已经足够我去增强数据集啦~
代码链接:https://download.csdn.net/download/day_upon/10901508
贴一张反射的图:
阈值处理
参考:https://blog.csdn.net/fly108108/article/details/81104330
哇,写文章也太累了把,先休息会儿,以后有时间再补充
转载请指明出处