matlab图形矫正,图像畸变矫正算法实现 matlab版
真正的相机镜头不理想,并在图像中引入一些失真。 为了解释这些非理想性,有必要在透视投影的方程中添加失真模型。
一、原图如下:
二、实现的效果图
三、算法具体实现
function undistorted_img = undistortImage(img, K, D)
% Corrects an image for lens distortion.
% K为内参矩阵,用来归一化坐标的,给定的
% D为径向畸变参数,给定的
[height, width] = size(img);
fx = K(1,1);
fy = K(2,2);
cx = K(1,3);
cy = K(2,3);
%Finish image undistorted function
undistorted_img = uint8(zeros(height, width));
% 依次找到去畸变后的图像坐标(y,x)对应的畸变坐标
for y = 1:height
for x = 1:width
% 第一步,通过内参矩阵归一化畸变图像的坐标
x1 = (x-cx)/fx;
y1 = (y-cy)/fy;
% 第二步,通过径向畸变模型得到归一化的畸变坐标
r2 = x1^2+y1^2;
x2 = x1*(1+D(1)*r2+D(2)*r2^2);
y2 = y1*(1+D(1)*r2+D(2)*r2^2);
% 第三步,坐标映射回去,去归一化,得到畸变坐标。
u_distorted = fx*x2+cx; % 列
v_distorted = fy*y2+cy; % 行
% 通过上面的步骤,我们找到了正常图像坐标(y,x)对应的畸变图像坐标(u_distorted, v_distorted),下一步就是赋值了,这里用的是最近邻插值法
% 第四步,最近邻插值
if (u_distorted >= 0 && v_distorted >= 0 && u_distorted < width && v_distorted < height) % 防止行列越界
undistorted_img(y, x) = img(round(v_distorted), round(u_distorted)); % 通过round函数取最近的数字
else
undistorted_img(y, x) = 0;
end
end
end
end
标签:矫正,r2,img,undistorted,畸变,坐标,distorted,matlab
来源: https://blog.csdn.net/jizhidexiaoming/article/details/89025810
matlab图形矫正,图像畸变矫正算法实现 matlab版相关推荐
- 图像畸变矫正 matlab,关于opencv图像畸变矫正
本文通过摄像头参数(fx,fy,cx,cy,k1,k2,p1,p2,p3(标定得到))去矫正摄像头拍出来的图像畸变详细代码在底部 首先 这里我们先介绍两个函数:他们都可以用来矫正畸变,但是一个是输入是 ...
- 图像畸变矫正——透视变换
图像畸变矫正--透视变换 由于相机制造精度以及组装工艺的偏差引入的畸变,或者由于照片拍摄时的角度.旋转.缩放等问题, 可能会导致原始图像的失真,如果要修复这些失真,我们可以通过透视变换,对图像进行畸变 ...
- (十三)图像畸变矫正
图像畸变矫正 针孔相机模型不考虑镜头畸变,因为一个理想的针孔相机没有镜头.但是由于相机的结构中存在着一些光学透镜,导致成像后的图像发生了扭曲,原本直立的高楼变得扭曲. 一.图像畸变原因 图像畸变的原因 ...
- MATLAB图形图像处理——图像灰度变换
MATLAB图形图像处理--图像灰度变换 一.MATLAB入门知识 1.什么是MATLAB 2.MATLAB处理图像 图像数据 数据类型 位深 函数 imread imwrite 二.图像灰度变换基础 ...
- 基于暗通道优先的单幅图像去雾算法(Matlab)
基于暗通道优先的单幅图像去雾算法(Matlab) 每一幅图像的RGB三个颜色通道中,总有一个通道的灰度值很低,几乎趋向于0.基于这个几乎可以视作是定理的先验知识,作者提出暗通道先验的去雾算法. 首 ...
- 基于python opencv实现广角相机标定和图像畸变矫正
目的: 实现相机标定,得到相机的内参以及畸变旋转参数等 尝试矫正由相机产生的图像畸变 代码: import cv2 as cv import numpy as np import glob impor ...
- VS2019+OpenCV4.5 鱼眼相机图像畸变矫正
一.鱼眼相机概述 鱼眼镜头是定焦镜头中的一种视野范围很大的镜头,它视角范围通常大于等于180度.鱼眼相机虽然能获得较大的视角范围,但是其拍摄的图像存在较大的畸变,为了后续任务的需要,往往需要对原始图像 ...
- Python--Opencv工业广角相机图像畸变矫正
实现畸变矫正之前需要知道两个重要参数,一个是相机内参,另一个是畸变参数.只有拿到这两个参数之后才可矫正,获取方式是通过标定来实现. 一.标定并获取重要参数 标定不需要买标定板,只需要用一张白纸把下图 ...
- photoshop图像滤镜——素描算法(含matlab与C代码)
二.photoshop图像滤镜--素描算法 素描的算法,网络上有多种,但是效果并不是特别理想.熟悉photoshop的朋友都知道,把彩色图片打造成素描的效果仅仅需要几步操作:1.去色:2.复制去色图层 ...
最新文章
- 程序员单身比例有多高?【2019开发者图鉴】告诉你
- EBGAN, LSGAN, BEGAN
- opencv视频模糊处理
- 【chainer速成】chainer图像分类从模型自定义到测试
- win10下安装pyspark及碰到的问题
- Windows10配置CUDA10.0+cudnn7.5.1
- 算法学习——动态规划之装载问题
- Bootstrap Table踩坑——设置多级表头后只显示第一级表头问题解决办法
- (小技巧)Sql server查看sql语句的执行时间(转)
- (25)FPGA面试技能提升篇(TCP、UDP)
- search engine
- 二进制,八进制,十六进制,十进制之间的换算
- ubuntu php 上传大文件失败
- Linux系统编程(28)——线程间同步
- springboot的异常处理
- java日期函数_java常用日期函数总结
- python-pandapower电力系统短路电流计算(算例3:探索一天的最佳电网运行方式))
- 谈谈MySQL如何选择float, double, decimal
- 【参赛作品37】openGauss/MogDB数据库函数创建的两种风格
- 记一次阿里云黑客攻击事件