原图加入径向畸变--包含有图像的双线性插值-python实现

一、相机畸变

相机前方的透镜堆=对进入相机的光线传播会产生影响,并且透镜与成像平面不可能完全平行,这使得光线穿过透镜后的投影到成像平面时的位置发生变化。
这种由透镜引起的畸变称为径向畸变,这种畸变越靠近图像边缘就会越明显。
用数学形式表示径向畸变:
平面图像上的一个像素点p可以用笛卡尔坐标系表示为[u,v]',可以把他表示为极坐标形式[r,Q]
其中r = sqrt(x*x + y* y).这里x和y分别为u和v的相机坐标系坐标。
就可以得到径向畸变的多项式表现形式:
在这里插入图片描述
求出来的x_distortion以及y_distortion都是相机坐标系上的坐标,因此还要转换到图像坐标系中。

u1 = fx * x_distortion + cx
v1 = fy * y_distortion + cy

则点(u1,v1)表示经过了畸变之后的像素点。

二、双线性插值

1.一维线性插值
在这里插入图片描述
已知了x0,x1,y1,y0和x的值,要求出y的值。
用插值的方式: 在这里插入图片描述
则可以得到:
就可以得到y的值就可以得到
2.双线性插值
在这里插入图片描述
双线性插值是一维线性插值的延伸模式,比如已知x1,y1,x2,y2以及Q(12) = f(x1,y2),Q(11) ,Q(21) ,Q(22) 的值,要获得中间p点(x,y)的值f(x,y). 此时可以先插值x轴获得x的坐标,再插值获得y轴获得y的坐标。
因为平常图像插值的时候,一般会出现已知要插值的图像像素不为正整数,因此这时候插值时,x1与x2间隔为1,y1与y2间隔为1,将该像素点插值在单元格之内,此时插值公式推导如下图所示,其中f函数表示的是某点的颜色值
在这里插入图片描述

三、实现对图像添加畸变

代码如下:

#为GS图像增加径向畸变
import numpy as np
import cv2
import math
#读取图片

img = cv2.imread("frame0456.jpg"
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值