在研究鱼眼矫正时,发现了这篇好博文,按照其思路我也针对自己的课题做了公式推导,大致效果一样,因此我就直接引用他的博文内容好了。
引自:柱面投影解析
还有一篇较好的博客,主要针对柱面投影后的图像做拼接:柱面投影+模板匹配+渐入渐出融合

【Octave】柱面投影简析

========================我是分割线==========================

在做全景拼接的时候,为了保持图片中的空间约束与视觉的一致性,需要做一定的预处理,可以是球面投影,柱面投影等。

如果仅仅是做水平方向的拼接,则做柱状投影就好了

一. 原理

  把平面图像投影到圆柱的曲面上。

  如下图,四边形GHEF表示待处理原图,投影之后,变成曲面JDILCK(黄色点标注)

  

  俯视图如下,DCE为待处理图像平面,FCG为投影所得曲面。

    

      

   设,原图像宽W,高H,角度FOG为相机视场角度α(一般为45°,即PI/4),圆形半径(焦距)f 有tan 1/2α = W / (2 * f), 则有f = W / (2 * tan(α/2))

      依次推算出,目标图像的宽(曲线FCG长)W‘ = f * α, 目标图像高H’不变, H‘ = H

     第一种推算:以图像像素原始坐标计算(即,左上角为原点)

   

     公式如下:

   

   第二种推算:设置图像原点为(W/2, H/2),用以简化计算步骤

  

二. Octave实现
I = imread('images/doge.bmp');
[height, width, depth] = size(I);
A = I;
centerX = width / 2;
centerY = height / 2;
% alpha = pi / 4;
f = width / (2 * tan(pi/4/2));
for i = 1 : width,for j = 1 : height,theta = asin((i - centerX) / f);pointX = int32(f * tan((i - centerX) / f) + centerX);pointY = int32((j - centerY) / cos(theta) + centerY);for k = 1 : depth,if pointX >= 1 && pointX <= width && pointY >= 1 && pointY <= height,A(j, i, k) = I(pointY, pointX, k);elseA(j, i, k) = 0;end;end;end;
end;
subplot(1, 2, 1);
imshow(I);
subplot(1, 2, 2);
imshow(A);Octave & Matlab代码

三. 效果

大致的公式没啥问题,本人按照思路复现了代码结果。

鱼眼图像矫正之——柱面模型投影公式推导相关推荐

  1. 鱼眼图像与柱面的投影

    鱼眼图像到柱面的反投影及柱面到鱼眼图像的投影 https://blog.csdn.net/c20081052/article/details/80999904 鱼眼图像到柱面图像的投影公式推导参考链接 ...

  2. 鱼眼相机的成像模型与畸变校正

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨11号线人 来源丨十一号组织 "800万像素","250m测距能力 ...

  3. PLSA隐变量主题模型的公式推导解惑

    PLSA隐变量主题模型,公式推导网上也好,还是书上也好,都属于从略. 但是无论对于新手来说,还是老手,从略是不合适的,这不是一个科学对待的态度.机器学习就这么几个模型,从略是不是也对不起自己了 好了, ...

  4. 线性回归模型的公式推导

    线性回归模型的公式推导 y = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + θ m x m \theta_0 +\theta_1 x_1+\theta_2 ...

  5. 3DMaxy有什么步骤设置模型投影

    3DMaxy有什么方法设置模型投影?3DMax是一款很实用,操作起来也很简单,很多做设计的人使用的都是这个软件,使用此软件熟练以后会让我们的办公效率大大提高,接下来,小编就和大家分享3dmax的模型投 ...

  6. PCL滤波--参数化模型投影点云---三维点云投影到二维平面

    PCL点云滤波模块,有一种方法叫做参数化模型投影点云滤波,意思就是创建一个参数化模型(可以是平面,球体,椎体等),然后将点云投影到上面,比如说如果投影到平面上,那么就实现了三维降到二维,滤掉了一个维度 ...

  7. OpenCV4每日一练day8:模型投影函数projectPoints()

      OpenCV4中提供了projectPoints()函数用于计算世界坐标系中的三维点投影到像素坐标系中的二维坐标. 例:程序参数来自下述图片 运行结果: 附上例代码: #include <o ...

  8. 空间向量在任意平面的投影公式推导 (矩阵方法)

    若 V是Rn 的一个子空间,已知V的一组基向量 {b1, b2, b3,...  bk} 则: 可构建矩阵 :A(nxk) = {b1 b2 b3 b4...bn} 有: x(m,n,q) 为空间向量 ...

  9. FOMM模型的公式推导

    GO FOMM需要找到一个从源帧到驱动帧的映射关系,给出最终结果,文中提出: T S ← D ( z ) ≈ T S ← R ( p k ) + ( d d p T S ← R ( p ) ∣ p = ...

最新文章

  1. 谷歌I/O大会3月对开发者开放
  2. 找到真爱了-sublime
  3. py-faster-rcnn源码解读系列
  4. 了解vue里的Runtime Only和Runtime+Compiler
  5. 不愿意和别人打交道_最不愿与陌生人打交道的星座
  6. NSString 中包含中文字符时转换为NSURL
  7. 互联网晚报 | 2月21日 星期一 | 北京冬奥会闭幕;天猫将新增菜鸟驿站送货上门服务;上汽奥迪首款电动车型开启预售...
  8. Java多线程设计要点
  9. 拓端tecdat|R语言对HullWhite短期利率模型仿真
  10. Java判断操作系统是32位还是64位
  11. 服务器 python cant open file_QQ炫舞转服系统-QQ炫舞官方网站-腾讯游戏
  12. html与python_Python和显示HTML
  13. Cocos Creator 开发微信小游戏 打包上线
  14. HTML+JS+websocket 实现联机“游戏王”对战(十三)- 实机演示视频
  15. 计算机网络钟中PCF,请问,为什么我向时钟芯片PCF8563中写入初始化数据后,读出来...
  16. Android 上的SSH软件 connectbot
  17. python的self.boardx -= 5 什么意思_python小白求帮助
  18. input file multiple获取文件名
  19. SiT9366:0.23ps超低抖动1-220MHz差分晶振,LVPECL/LVDS/HCSL
  20. STM32CubeMX V6.3.0 在STM32F407ZGT6(正点原子开发板)上实验5----TCP客户端

热门文章

  1. java口袋精灵怎么变强,口袋精灵OL强势来袭 教你打造最强精灵
  2. 解决jupyter文件路径的问题——Permission denied: Untitled.ipynb
  3. 13.Centos软件包管理(rpm,yum,dnf),源码编译安装
  4. 第七次广州软件测试交流会信息公布
  5. ajaxfileupload 返回值_ajaxfileupload返回文件名中文乱码
  6. Web前端 HTML基础
  7. linux中pppoe技术分析,Linux中PPPOE技术分析
  8. php伪静态教程,PHP伪静态的图文代码详细介绍
  9. C#中DirectoryInfo类、目录信息类、文件夹信息类的用法
  10. WPF编程基础入门 ——— 第三章 布局(五)布局面板WrapPanel