每日笔记


python双线形插值保存图像 python双线性插值函数_opencv


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自行实现

python双线形插值保存图像 python双线性插值函数_双线性插值_02


9.15日

带着问题去学习:

  • 1:变换的形式(公式)是什么?
  • 2:旋转中心是什么?毕竟以不同位置为旋转中心得到的结果是不一样的。
  • 3:采用前向映射还是反向映射?(反向映射更为有效)
  • 4:采用反向映射后,采用何种插值算法?最常用的的是双线性插值,OpenCV也是默认如此。

(1) 变换形式

采取冈萨雷斯的《数字图像处理_第三版》的变换矩阵方式,仿射变换的一般形式如下:

python双线形插值保存图像 python双线性插值函数_opencv_03


式中的T就是变换矩阵,其中 (v,w)为原坐标,(x,y) 为变换后的坐标,不同的变换对应不同的矩阵,这里也贴出来吧,一些常见的变换矩阵及作用如下表:

python双线形插值保存图像 python双线性插值函数_python双线形插值保存图像_04


(2)坐标系变换

缩放、平移:以坐标原点为变换中心

而旋转和偏移,一般以图像原点为中心,涉及到坐标系变换了。

因此,对于旋转和偏移,就需要3步(3次变换):

1) 将输入原图图像坐标转换为笛卡尔坐标系;

2)进行旋转计算。旋转矩阵前面已经给出了;

3)将旋转后的图像的笛卡尔坐标转回图像坐标。