真正的相机镜头不理想,并在图像中引入一些失真。 为了解释这些非理想性,有必要在透视投影的方程中添加失真模型。

一、原图如下:

二、实现的效果图

三、算法具体实现

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版相关推荐

  1. 图像畸变矫正 matlab,关于opencv图像畸变矫正

    本文通过摄像头参数(fx,fy,cx,cy,k1,k2,p1,p2,p3(标定得到))去矫正摄像头拍出来的图像畸变详细代码在底部 首先 这里我们先介绍两个函数:他们都可以用来矫正畸变,但是一个是输入是 ...

  2. 图像畸变矫正——透视变换

    图像畸变矫正--透视变换 由于相机制造精度以及组装工艺的偏差引入的畸变,或者由于照片拍摄时的角度.旋转.缩放等问题, 可能会导致原始图像的失真,如果要修复这些失真,我们可以通过透视变换,对图像进行畸变 ...

  3. (十三)图像畸变矫正

    图像畸变矫正 针孔相机模型不考虑镜头畸变,因为一个理想的针孔相机没有镜头.但是由于相机的结构中存在着一些光学透镜,导致成像后的图像发生了扭曲,原本直立的高楼变得扭曲. 一.图像畸变原因 图像畸变的原因 ...

  4. MATLAB图形图像处理——图像灰度变换

    MATLAB图形图像处理--图像灰度变换 一.MATLAB入门知识 1.什么是MATLAB 2.MATLAB处理图像 图像数据 数据类型 位深 函数 imread imwrite 二.图像灰度变换基础 ...

  5. 基于暗通道优先的单幅图像去雾算法(Matlab)

    基于暗通道优先的单幅图像去雾算法(Matlab) 每一幅图像的RGB三个颜色通道中,总有一个通道的灰度值很低,几乎趋向于0.基于这个几乎可以视作是定理的先验知识,作者提出暗通道先验的去雾算法. ​ 首 ...

  6. 基于python opencv实现广角相机标定和图像畸变矫正

    目的: 实现相机标定,得到相机的内参以及畸变旋转参数等 尝试矫正由相机产生的图像畸变 代码: import cv2 as cv import numpy as np import glob impor ...

  7. VS2019+OpenCV4.5 鱼眼相机图像畸变矫正

    一.鱼眼相机概述 鱼眼镜头是定焦镜头中的一种视野范围很大的镜头,它视角范围通常大于等于180度.鱼眼相机虽然能获得较大的视角范围,但是其拍摄的图像存在较大的畸变,为了后续任务的需要,往往需要对原始图像 ...

  8. Python--Opencv工业广角相机图像畸变矫正

     实现畸变矫正之前需要知道两个重要参数,一个是相机内参,另一个是畸变参数.只有拿到这两个参数之后才可矫正,获取方式是通过标定来实现. 一.标定并获取重要参数 标定不需要买标定板,只需要用一张白纸把下图 ...

  9. photoshop图像滤镜——素描算法(含matlab与C代码)

    二.photoshop图像滤镜--素描算法 素描的算法,网络上有多种,但是效果并不是特别理想.熟悉photoshop的朋友都知道,把彩色图片打造成素描的效果仅仅需要几步操作:1.去色:2.复制去色图层 ...

最新文章

  1. 程序员单身比例有多高?【2019开发者图鉴】告诉你
  2. EBGAN, LSGAN, BEGAN
  3. opencv视频模糊处理
  4. 【chainer速成】chainer图像分类从模型自定义到测试
  5. win10下安装pyspark及碰到的问题
  6. Windows10配置CUDA10.0+cudnn7.5.1
  7. 算法学习——动态规划之装载问题
  8. Bootstrap Table踩坑——设置多级表头后只显示第一级表头问题解决办法
  9. (小技巧)Sql server查看sql语句的执行时间(转)
  10. (25)FPGA面试技能提升篇(TCP、UDP)
  11. search engine
  12. 二进制,八进制,十六进制,十进制之间的换算
  13. ubuntu php 上传大文件失败
  14. Linux系统编程(28)——线程间同步
  15. springboot的异常处理
  16. java日期函数_java常用日期函数总结
  17. python-pandapower电力系统短路电流计算(算例3:探索一天的最佳电网运行方式))
  18. 谈谈MySQL如何选择float, double, decimal
  19. 【参赛作品37】openGauss/MogDB数据库函数创建的两种风格
  20. 记一次阿里云黑客攻击事件

热门文章

  1. QT:通过按钮调用qpaintEvent事件实现自定义绘图
  2. android权限赋予流程
  3. Ultimus 安码 签约山东空管局综合业务管控平台项目
  4. Zend API:深入 PHP 内核
  5. oracle 修改字段类型流程
  6. RTL8211 uboot 模式下4芯网线对接千兆如何协商成百兆
  7. LibGDX重建Flappy Bird——(4) 创建游戏对象
  8. 时间复杂度+常见复杂度解释
  9. 微信公众号开发之自动回复
  10. Cryptography I 斯坦福大学 Dan Boneh——学习笔记1