镜头桶形失真校正算法

2023-11-12

短焦镜头通常会产生桶形失真,以下是校正算法的matlab代码:

 

[cpp]  view plain copy
  1. %% 镜头桶形失真校正(短焦镜头)  
  2.   
  3. img_origin1 imread('Still001.bmp');  
  4. img_origin rgb2gray(img_origin1);  
  5.   
  6. k1 -0.00000037;   形变参数,根据实际情况调整  
  7. k2 -0.00000037;  
  8.   
  9. img_size size( img_origin );  
  10. img_undist zeros( img_size );  
  11. img_undist uint8( img_undist );  
  12.   
  13.   
  14. for l1 1:img_size(1)  垂直方向  
  15.       
  16.     l1 img_size(1)/2;  
  17.       
  18.     for l2 1:img_size(2)  水平方向  
  19.           
  20.         l2 img_size(2)/2;  
  21.           
  22.         x1 round( k1 k2 );  
  23.         y1 round( k1 k2 );  
  24.         y1 y1 img_size(1)/2;  
  25.         x1 x1 img_size(2)/2;  
  26.           
  27.         img_undist(l1,l2) img_origin(y1, x1);  
  28.           
  29.     end  
  30. end  
  31.   
  32.   
  33. figure(1);  
  34. subplot(121); imshow(img_origin);  
  35. subplot(122); imshow(img_undist);  
  36.   
  37. imwrite(img_origin,'1.bmp');  
  38. imwrite(img_undist,'2.bmp');  

在实时视频处理中,如果对每帧图像都要重复进行坐标转换运算,就是个很大的浪费,我们可以在初始化过程中先将坐标对应关系建立一个二维查找表,之后每帧处理只需要查表,C++代码如下(用到了OpenCV):

 

[cpp]  view plain copy
  1. // 镜头校正查找表  
  2. CvPoint CorrInd[480][640];  
  3.   
  4. // 镜头径向畸变校正初始化  
  5. void LensCorrectInit( double k1 -0.00000035, double k2 -0.00000035 );  
  6.   
  7.   
  8. // 镜头径向畸变校正初始化  
  9. void LensCorrectInit( double k1, double k2  
  10.  
  11.     int imgWidth camera.GetWidth();   // 获得摄像头图像尺寸  
  12.     int imgHeight camera.GetHeight();  
  13.   
  14.     int imgWd2 imgWidth>>1;  
  15.     int imgHd2 imgHeight>>1;  
  16.   
  17.     int it;  
  18.     int jt;  
  19.     int it2;  
  20.     int jt2;  
  21.   
  22.     forint i=0; i
  23.      
  24.         it imgHd2; // (i+1) 是其真正的图像坐标  
  25.         forint j=0; j
  26.          
  27.             double temp;  
  28.   
  29.             jt imgWd2; // (j+1) 是其真正的图像坐标  
  30.             temp k1*it*it k2*jt*jt;  
  31.             it2 (int)(temp it);  
  32.             jt2 (int)(temp jt);  
  33.   
  34.             it2 it2 imgHd2 1;  
  35.             jt2 jt2 imgWd2 1;  
  36.   
  37.             CorrInd[i][j].x jt2;  
  38.             CorrInd[i][j].y it2;  
  39.          
  40.      
  41.  
  42.   
  43.   
  44.   
  45.   
  46. // 镜头径向畸变校正  
  47. void LensCorrect( IplImage* src, IplImage* dst  
  48.  
  49.     int imgWidth dst->width;  
  50.     int imgHeight dst->height;  
  51.   
  52.     int it2;  
  53.     int jt2;  
  54.   
  55.     forint i=0; i
  56.      
  57.         uchar *pdstdata (uchar*)(dst->imageData) i*dst->widthStep;  
  58.   
  59.         forint j=0; j
  60.          
  61.             it2 CorrInd[i][j].y;  
  62.             jt2 CorrInd[i][j].x;  
  63.   
  64.             uchar psrcdata cvPtr2D( src, it2, jt2 );  
  65.   
  66.             *(pdstdata++) *(psrcdata++);  
  67.             *(pdstdata++) *(psrcdata++);  
  68.             *(pdstdata++) *(psrcdata++);  
  69.          
  70.      
  71. }  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

镜头桶形失真校正算法 的相关文章

  • 图像紫边消除(depurple)

    图像紫边广泛存在于目前的手机摄像头 数码相机 监控摄像头等数字成像系统所得图像中 当我们使用这些设备在逆光 大光圈等条件下拍摄时 所得图像的局部区域 特别是高反差区域 亮暗对比反差很大的图像区域 比如天空 灯管与物体相接的边缘 会比较容易观
  • AOI的实际应用

    使用AOI检测LED固晶焊线的支架产品 产品结构 使用远心光学镜头 高分辨率 高景深 低畸变以及独有的平行光设计等 被测元件清晰成像 且无斜视 保证不良检出 1 缺陷检测原理 通过模板匹配法 这是一种基本的识别方法 研究某一特定对象物的图案
  • windows8.1 vs2015 dlib库cpu 版本编译以及应用 library is 90, caller expects 80

    近期由于要做一个关于人脸计数的项目 因此对dlib库进行了编译和使用 其中遇到了不少问题 下面请听我一一道来 第一步 从dlib官网下载dlib源码 链接地址 https github com davisking dlib 第二步 采用cm
  • 数字图像处理(入门篇)六 图像数据预处理之坐标变化

    目录 1 平移 2 镜像 3 旋转 4 缩放 图像的坐标变换又称为图像的几何计算 常见的基本变换包括 平移 旋转 镜像和缩放等等 1 平移 1 代码 使用OpenCV仿射变换函数 cv2 warpAffine 实现平移操作 import n
  • Image Processing图像处理(对比俩张图像的差异并且在图上标注出来)

    图像处理是构建所有计算机视觉的基础 按照我的图像处理指南使用OpenCV库学习计算机视觉的基础知识 SSIM进阶 利用python openCV将图片的差异性画框展示出来 诀窍是学习如何准确地确定在 x y 坐标位置上 图像的差异在哪里 使
  • 一、MM Segmentation 介绍与安装

    时间 2022年4月1日 内容 学习MM Segmentation MM Segmentation 介绍和理解 MM Segmentation 利用注册器和配置文件 实现了 可拓展性 和 易用性 它是一个封装了许多语义分割深度神经网络的框架
  • MATLAB实现五种边缘检测

    一 原理 常用的边缘检测算法有拉普拉斯边缘检测算法 Robert边缘检测算子 Sobel边缘检测算子 Prewitt边缘检测算子 Canny边缘检测算子 二 代码 filename pathname uigetfile jpg bmp gi
  • 第五章-数字水印-1-位平面

    数字水印概念 数字水印是一种将特定数字信息嵌入到数字作品中从而实现信息隐藏 版权认证 完整性认证 数字签名等功能的技术 以图片水印为例 水印嵌入过程 版权信息水印A嵌入到图像B中 得到含有水印的图像C 图像C与图像B在外观上基本一致 肉眼无
  • 【Python-利用动态二维码传输文件(二)】实现文件二进制读取、利用base64编码把文件拆分成多张二维码、重组拆分后的文件并验证。

    为了使用二维码传输文件 上一篇文章已经实现了获取信息存入二维码并打印 由于单个二维码存储的信息量是有限的 而且文件一般也比较大 所以必须把文件先进行拆分 拆分后一块一块信息存入多张二维码中 最后通过图像识别 把所有二维码信息准确读取后再重新
  • PR-RL:Portrait Relighting via Deep Reinforcement Learning

    文章目录 Title PR RL Portrait Relighting via Deep Reinforcement Learning 1 Article 1 1 Abstract and Introduction 1 2 Conclus
  • 【Matlab图片剪裁】

    标题Matlab剪裁图片 提取感兴趣部分 问题描述 当需要从一幅图片中提取一些感兴趣的内容时 比如一些细小的文字 图案等 如果从整个图片中直接提取 必然会大大增加计算量 导致处理时间很长 而且多数计算都是无效计算 进而非常消耗资源 解决办法
  • Edraw Max教程】如何有趣的创建梦幻般的思维导图

    Edraw Max 亿图图示 是一款综合图形图表制作软件 它包含丰富的实例和模版 帮助您轻松创建流程图 网络拓扑图 组织结构图 商业图表 工程图 思维导图 软件设计图和平面布局图等 亿图采用更智能和人性化的绘制方式 最大程度帮助设计者降低工
  • 2021全国电设(F题)openmv的图像识别之数字识别

    基于openmv的图像识别 通过参加全国电子设计大赛F题总结出openmv4的数字识别 其它版本暂时没试过 欢迎交流 openmv简介 OpenMV是一个开源 低成本 功能强大的机器视觉模块 以STM32F427CPU为核心 集成了OV77
  • MEF:COA-NET

    COA NET COLLABORATIVE ATTENTION NETWORK FOR DETAIL REFINEMENT MULTI EXPOSURE IMAGE FUSION COA NET 用于细节细化多曝光图像融合的协作关注网络 近
  • 无监督低照度图像增强网络ZeroDCE和SCI介绍

    目录 简介 Zero DCE 算法介绍 模型代码 无监督loss介绍 小结 Self Calibrated Illumination SCI 模型介绍 无监督loss介绍 小结 总结 简介 当前有较多深度学习的方法来做图像效果增强 但多数都
  • 【python-opencv】硬币检测

    使用 python3 8 x opencv 硬币检测 问题描述 设计思路1 使用简单特征识别 具体操作 部分代码 设计思路2 模板匹配 源码 模板制作 完整代码 问题描述 使用图像处理技术 从照片中识别硬币的个数 并判断总价值 设计思路1
  • pil_openvcv_scikit-image_tensorflow四种读图方式对比

    文章目录 1 四种不同的库读取jpg图显示 2 评估所读图片的差异 3 简单说明有差异原因 4 同样的流程对png图片进行处理 5 png图片转jpg 5 1 使用PIL进行转换 5 2 使用Opencv进行转换 5 3 使用Tensorf
  • Python的PIL库

    Python图像库PIL Python Image Library 是python的第三方图像处理库 图像类Image class Image类是PIL中的核心类 比如从文件中加载一张图像 处理其他形式的图像 或者是从头创造一张图像等 Im
  • 目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像分类

    目录 前言 知识储备 图像分类基础知识 1 具体领域划分 2 图像分类问题的3层境界
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二

随机推荐

  • python极简循环输出+break和continue

    目录 一 python极简输出 二 break和continue 一 python极简输出 如上图所示 上面只有一个错误答案 我们用排除法知道 错误的是答案B 但这里面有个有趣的答案C 就是 print languages i years
  • 【华为OD机试】查字典 (C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 语言限定 C clang11 C clang 11 Pascal fpc 3 0 2 Java jav
  • 人眼定位算法简单概述

    这篇博客只是总结一下人眼定位的方法 首先人眼定位效果是得到人眼的坐标 即瞳孔的坐标 大体来说人眼定位的方法有两种 第一种是利用人眼的几何特征 灰度特征等通过算法来实现定位 第二种要通过机器学习 其实opencv自带了瞳孔分类器 但我应用起来
  • 基于 python的MES管理系统

    一 项目简介 基于 python的MES管理系统 二 实现功能 支持多端 pc端 移动端 小程序 app 支持各种协议 modbus mqtt 支持接入各种数据源 内置数据计算服务 支持数据清洗 支持数据可视化 支持空间数据 支持门店数据
  • ZooKeeper的一个性能测试

    2011 07 15 18 07 00 3台ZooKeeper服务器 8核64位jdk1 6 log和snapshot放在不同磁盘 场景一 同一个目录下 先createEPHEMERALnode 再delete create和delete各
  • 人脸识别技术成熟加速终端设备技术扩展

    脸支付的应用 已经对我们的生活带来了很多便利 除了金融 现在商超等场景 也大多添加了刷脸支付设备 无需拿出手机 不用担心手机没电 刷脸即可支付 人脸识别技术的成熟 也加速了在终端设备的技术扩展速度 现在的刷脸设备 除了基本的支付功能 还融合
  • xxx.jar中没有主清单属性解决办法

    在springboot中的pom xml文件中引入
  • MyEclipse下配置WebLogic10(转)

    MyEclipse下配置WebLogic10 转 安装 WebLogic 比较容易 在这里就不再累述了 大家可以参阅相关文档 现在着重讲一下 WebLogic 的配置 因为后面在配置 MyEclipse 时将用到这里的配置信息 运行开始 g
  • 【Bug记录】Fail to create pixmap with Tk_GetPixmap in TkImgPhotoInstanceSetSize

    Bug记录 项目场景 问题描述 解决方案 项目场景 绘图代码出现Fail to create pixmap with Tk GetPixmap in TkImgPhotoInstanceSetSize 问题描述 在测试网络时出现此Bug 可
  • 机器数的原码、反码、补码、移码表示以及浮点数的二进制表示

    初学计算机组成原理时 有点儿搞不清楚机器数的各种表示方法 今天在这里总结一下 希望对大家有帮助 首先明确两个概念 机器数是指将 和 数字化的数 其中用 0 表示 1 表示 而对应的有 和 的数则称为真值 机器数的表示方法 1 原码表示法 符
  • debug模式下,一个30的for循环直接从i=1跳到你想要的数字(i=10)

    废话不多说 直接上图 1 先创建一个for循环 debug模式运行 在for循环中间打断点 我们可以看出刚运行的时候i 0 2 点击 debug 下一步 或者F6 直到他显示这个variables 这时 我们可以对i进行任意的修改你想要的数
  • 【Python】 14-CVS文件操作

    1 CVS文件 值没有类型 所有东西都是字符串 没有字体大小或颜色的设置 没有多个工作表 不能指定单元格的宽度和高度 不能合并单元格 不能嵌入图像或图表 CSV 文件中的每个单元格 有逗号分割 也许你可以只是对每行文本调用 split 方法
  • Google Pixel 3玩机教程

    说到谷歌的亲儿子Pixel系列 你一定就会想到安卓原生系统 现在我将会教你如何使用pixel去root并且破解电信 第一步 解锁手机 1 打开手机的开发者选项 选择OEM解锁 打开它 再把USB调试打开 2 在电脑上的google deve
  • GPIO的开漏和推挽

    GPIO的开漏和推挽 简单来说推挽输出可以自由输出高低电平 开漏输出只能在关闭时配合上拉提高高电平 打开时漏掉电流形成低电平 操作单片机点亮一个LED的时候我们需要操作GPIO输出一个高电平来点亮一个LED 当我们打开用户手册时会发现GPI
  • OR-Tool 报INFEASIBLE

    OR Tool 使用Minimum Cost Flows报 There was an issue with the min cost flow input Status Status INFEASIBLE 这是因为node的编号需要是连续的
  • 肺炎疫情攻防战--肺炎X光病灶识别 Pytorch baseline

    肺炎疫情攻防战 肺炎X光病灶识别 Pytorch baseline 刚从Keras转Pytorch没多久 一边看着文档一边Google完成这比赛的baseline 比赛地址 比赛简介 本次由2019 nCoV病毒引发的肺炎疫情仍在持续 AI
  • 使用Hugging Face管道轻松应用NLP预训练模型

    这一段时间在研究自然语言处理 一直想找一些预训练模型 发现这个非常全 就收藏好好研究 作者 Robin van Merle 编译 VK 来源 Towards Data Science 原文链接 https towardsdatascienc
  • VMware中NET模式无法获取IP地址

    0x00 打开我的kali尝试运行脚本时 发现无论是桥接还是NET都无法获取到IP地址 经过各种百度以及尝试 最终解决 因此在此写下文章来记录一下 如果你也遇到相同问题 希望可以帮助到你 0x01 先看一下在NET下无法获取到地址的情况 此
  • react-create-app 基于 react-app-rewired scss设置全局变量全局函数

    目录 重写react脚手架配置 使用 scss 引用全局 scss 文件中的变量和函数应用全局 测试 重写react脚手架配置 customize cra 合并配置 react app rewired 重写react脚手架配置 安装依赖 n
  • 镜头桶形失真校正算法

    短焦镜头通常会产生桶形失真 以下是校正算法的matlab代码 cpp view plain copy 镜头桶形失真校正 短焦镜头 img origin1 imread Still001 bmp img origin rgb2gray img