每日笔记
9.13日
task1:openCV环境配置 pip install opencv-python 再上网随便找个小例子测试一下安装是否成功
1、常见插值算法:最近邻插值、双线性插值和三次样条插值
2、算法原理学习:
(1)最近邻插值,是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输出。
(2)双线性插值:就是线性插值在二维时的推广,在两个方向上做三次线性插值.
线性插值公式:f(x) = a1x+a0
3、OpenCV常用API
python常用opencv的API
本次学习主要是cv2.resize()这个函数
cv2.resize(src,dsize,fx,fy,interpolation)
参数含义:
src:原图像
dsize:输出图像所需大小
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子
interpolation:插值方式
插值方式:
cv.INTER_NEAREST 最近邻插值
cv.INTER_LINEAR 双线性插值
cv.INTER_CUBIC 基于4*4像素邻域的三次插值法
cv.INTER_AREA 基于局部像素的重采样
小tip:通常,缩小使用cv.INTER_AREA,放缩使用cv.INTER_CUBIC(较慢)和cv.INTER_LINEAR(较快效果也不错)。默认情况下,所有的放缩都使用cv.INTER_LINEAR。
4、基于openCV自行实现
9.15日
带着问题去学习:
- 1:变换的形式(公式)是什么?
- 2:旋转中心是什么?毕竟以不同位置为旋转中心得到的结果是不一样的。
- 3:采用前向映射还是反向映射?(反向映射更为有效)
- 4:采用反向映射后,采用何种插值算法?最常用的的是双线性插值,OpenCV也是默认如此。
(1) 变换形式
采取冈萨雷斯的《数字图像处理_第三版》的变换矩阵方式,仿射变换的一般形式如下:
式中的T就是变换矩阵,其中 (v,w)为原坐标,(x,y) 为变换后的坐标,不同的变换对应不同的矩阵,这里也贴出来吧,一些常见的变换矩阵及作用如下表:
(2)坐标系变换
缩放、平移:以坐标原点为变换中心
而旋转和偏移,一般以图像原点为中心,涉及到坐标系变换了。
因此,对于旋转和偏移,就需要3步(3次变换):
1) 将输入原图图像坐标转换为笛卡尔坐标系;
2)进行旋转计算。旋转矩阵前面已经给出了;
3)将旋转后的图像的笛卡尔坐标转回图像坐标。