图像畸变校正程序一

合集下载

Adobe Photoshop软件中如何矫正图像的透视变形

Adobe Photoshop软件中如何矫正图像的透视变形

Adobe Photoshop软件中如何矫正图像的透视变形Adobe Photoshop是一款功能强大的图像处理软件,它不仅可以编辑照片, 还可以进行图像的矫正和修复。

其中一个重要的功能是对图像进行透视变形的矫正。

图像的透视变形指的是由于拍摄角度或镜头扭曲等原因,导致图像中的物体看起来偏斜或形变的现象。

在摄影、建筑设计、室内装潢等领域,透视变形是常见的问题,矫正这种变形能够使图像更加真实和美观。

使用Adobe Photoshop来矫正图像中的透视变形,可以通过以下步骤来完成:步骤一:打开图像首先,将待处理图像导入到Adobe Photoshop中。

点击菜单栏中的“文件”选项,选择“打开”来选择需要矫正的图像文件。

或者直接拖拽图像文件到Photoshop的工作区域中。

步骤二:选择“透视变形”工具在Photoshop的工具栏上找到“透视变形”工具。

它通常在变形工具的下方,使用一个带有四个角的椭圆图标标识。

点击该工具图标或按下键盘快捷键“Shift+T”来激活透视变形工具。

步骤三:标记透视变形的角点使用透视变形工具,要先标记出图像中需要矫正的区域的四个角点。

可以通过点击图像的四个角,或者拖拽鼠标来选择边缘上的点。

确保选取的点能够准确表示图像中的四个角。

步骤四:调整透视变形的角度和形状在选取了四个角点后,可以开始调整透视变形的角度和形状。

通过点击选取的点并拖动,调整图像的形状以使其看起来更加自然。

可以根据实际需要,垂直拉长或缩短线条,并保持水平线的位置不变。

步骤五:应用变形效果一旦完成了透视变形的调整,即可应用效果并保存图像。

点击工具选项栏上方的复选标记按钮,或按下键盘上的Enter键来应用更改。

然后使用“文件”菜单中的“另存为”选项将图像保存到指定的位置。

通过以上步骤,可以很容易地使用Adobe Photoshop对图像进行透视变形的矫正。

在操作过程中,要特别注意选取的角点的准确性,以及调整变形效果的自然和平衡。

快速矫正镜头畸变 Adobe Premiere Pro技巧指南

快速矫正镜头畸变 Adobe Premiere Pro技巧指南

快速矫正镜头畸变:Adobe Premiere Pro技巧指南镜头畸变是摄影师在使用广角镜头或鱼眼镜头时经常会遇到的一个问题。

它导致图像出现扭曲、变形或拉伸等现象,影响了画面的美感和真实性。

然而,使用Adobe Premiere Pro软件,你可以轻松而快速地矫正镜头畸变,让你的影片更加专业和高质量。

以下是一些在Adobe Premiere Pro中矫正镜头畸变的常用技巧:1. 导入素材:首先,将拍摄的素材导入到Adobe Premiere Pro软件中。

你可以通过拖放文件或使用“导入”选项来导入你的视频片段。

2. 创建序列:在导入素材后,创建一个新的序列来编辑你的视频片段。

选择适当的序列设置,例如帧速率、分辨率和纵横比,以保持与素材一致。

3. 找到畸变修复效果:在效果面板中,搜索并找到“拼接修复”(Warp Stabilizer)效果。

这个效果不仅可以用来稳定图像,还可以矫正镜头畸变。

4. 应用效果:将“拼接修复”效果拖放到你的视频片段上,然后将其应用到需要矫正镜头畸变的镜头上。

这个效果将自动分析和调整图像以修复畸变。

5. 调整效果设置:在效果控制选项中,你可以调整“拼接修复”效果的设置,以实现更好的矫正效果。

通常,你可以尝试调整“拼接风格”、“镜头类型”和“剧场解析度”等选项,直到得到满意的结果。

6. 预览和导出:完成调整后,你可以在预览面板中预览效果。

如果效果不理想,你可以返回效果控制选项,再次进行调整。

当你满意结果后,可以将视频导出为最终的影片。

此外,Adobe Premiere Pro还提供了其他一些高级技巧和插件,可以进一步提升镜头畸变矫正的效果:1. 使用“镜头失真”效果:除了“拼接修复”效果外,Adobe Premiere Pro还提供了“镜头失真”(Lens Distortion)效果。

通过调整该效果的参数,你可以进一步修正和校准镜头畸变。

2. 使用第三方插件:除了内置的效果,你还可以使用一些第三方插件来增强镜头畸变矫正的能力。

摄影中的镜头畸变与校正技巧

摄影中的镜头畸变与校正技巧

摄影中的镜头畸变与校正技巧摄影是一门充满艺术性和技术性的创作形式。

在摄影过程中,摄影师常常会面临各种技术挑战,其中之一就是镜头畸变。

镜头畸变是在拍摄过程中产生的图像变形现象,它可能会影响到照片的质量和真实性。

为了解决这一问题,摄影师需要熟悉镜头畸变的类型和校正技巧。

一、什么是镜头畸变镜头畸变是指镜头在成像过程中引起的图像变形。

它主要分为三种类型:桶形畸变、枕形畸变和畸形畸变。

1. 桶形畸变桶形畸变是在照片中出现图像向中心收缩的现象,形状类似于桶子。

这种畸变通常出现在广角镜头和鱼眼镜头中,由于广角镜头的视角较大,所以图像边缘会向中心收缩。

2. 枕形畸变枕形畸变是在照片中出现图像向边缘收缩的现象,形状类似于枕头。

这种畸变通常出现在长焦镜头中,由于长焦镜头的视角较窄,所以图像边缘会向中心收缩。

3. 畸形畸变畸形畸变是在照片中出现一些不规则的图像变形现象,如弯曲或拉伸等。

这种畸变通常由于镜头的质量较差或者使用不当造成。

二、镜头畸变的校正技巧镜头畸变可以通过以下几种方法进行校正,以保证照片的质量和真实性。

1. 镜头校正大部分相机和摄像机都具有镜头校正功能,可以通过设置菜单中的参数进行校正。

通过选择恰当的校正参数,可以有效减轻或消除镜头畸变。

2. 后期校正在后期处理中,我们可以使用专业的图像编辑软件来进行镜头畸变的校正。

这种方法可以更加精确和灵活地处理畸变问题,同时也可以对图像进行其他的调整和修饰。

3. 畸变校正镜头一些专业的摄影镜头具有畸变校正的功能。

这些镜头内部集成了特殊的光学组件,可以在成像过程中主动校正镜头畸变,提供更加真实和准确的图像。

4. 构图和摄影技巧在实际拍摄中,合理的构图和摄影技巧也可以帮助减轻或掩盖镜头畸变。

通过选择恰当的角度、距离和焦距等因素,可以最大程度地优化图像的透视和比例关系,减少畸变的出现。

总结:镜头畸变是摄影过程中常见的技术挑战之一。

摄影师可以通过了解镜头畸变的类型和校正技巧,有效地解决这一问题,保证照片的质量和真实性。

如何使用Adobe Photoshop软件进行镜头畸变和透视修复

如何使用Adobe Photoshop软件进行镜头畸变和透视修复

如何使用Adobe Photoshop软件进行镜头畸变和透视修复镜头畸变和透视问题是使用相机拍摄照片时常见的技术挑战。

这可能导致图像中的直线看起来弯曲,或者透视出现不正常的变形。

然而,借助Adobe Photoshop软件的功能,我们可以轻松地修复这些问题,使照片看起来自然又美丽。

一、什么是镜头畸变和透视问题?在了解如何修复这些问题之前,我们首先需要了解镜头畸变和透视问题是什么。

镜头畸变是由镜头的特性和构造引起的,会使图像中的直线看起来弯曲或扭曲。

这种畸变通常在广角镜头或鱼眼镜头中更为明显。

而透视问题则是因为照片中的平行线由于拍摄角度的不同而看起来会汇聚或扩散。

二、如何使用Adobe Photoshop修复镜头畸变?修复镜头畸变可以让图像中的直线看起来更直。

在Adobe Photoshop中,有几种方法可以处理这个问题。

1. 选择“滤镜” -> “镜头校正”选项。

在弹出的对话框中,我们可以通过拖动滑块或输入数值来调整畸变修复。

这种方法非常简单易懂,适用于轻微的畸变问题。

2. 使用变换工具。

选择“编辑” -> “变换” -> “形变”选项。

在弹出的对话框中,我们可以用鼠标拖动图像的四个角来调整畸变修复。

这种方法更灵活,适用于复杂的畸变问题。

三、如何使用Adobe Photoshop修复透视问题?修复透视问题可以使照片中的平行线更平行,看起来更自然。

下面是一些技巧:1. 使用“变换”工具。

选择“编辑” -> “变换” -> “透视”选项。

在弹出的对话框中,我们可以通过调整图像的控制点来修复透视问题。

将控制点拖拽到正确的位置,使平行线看起来更平行。

这种方法适用于简单的透视修复。

2. 使用“自由变换”工具。

选择“编辑” -> “自由变换”选项。

通过拖动四个角点和中间控制点,我们可以自由地调整图像的透视。

这种方法适用于复杂的透视修复。

四、进阶技巧除了基本的修复方法外,有一些进阶技巧可以进一步提升修复效果。

鱼眼图像畸变校正算法

鱼眼图像畸变校正算法

鱼眼图像畸变校正算法司 磊 朱学玲(安徽新华学院 信息工程学院 安徽 合肥 230088)摘 要: 根据鱼眼镜头成像的特点,选择合适的图像畸变校正算法,标定鱼眼图像的中心和半径,用标定得到的参数进行校正,推出校正模型,方法简单,易于实现,并对鱼眼图的畸变矫正问题提出意见与看法。

关键词: 鱼眼图像;畸变矫正;图像预处理;图像增强中图分类号:TP391 文献标识码:A 文章编号:1671-7597(2012)1110166-02鱼眼图像的畸变矫正是以某种独特的变换方式将一副鱼眼 2 有关鱼眼图片的粗略校正图像转换为理想图像的操作,这种操作在全方位视觉导航中具1)求取鱼眼图像行和列的比值有重要的作用,是系统自动识别、跟踪和定位目标所必须的基将投射生成标准圆变换为鱼眼图片并求取图片中心点的方础操作。

法与普通相机照相原理不同,对于提取出来的鱼眼图片的轮1 畸变图像的校正原理廓,我们先假定一个阈值,比如设一个灰度值30,用软件勾勒描绘出校正鱼眼图片大概的轮廓,然后先求出该轮廓的中心点根据畸变图像特点标定坐标图,求取标定点像素的理想值坐标,根据轮廓的图形和鱼眼图像的中心点的坐标,可计算出和实际值,同时生成坐标映射表,再把坐标映射表用于畸变图畸变图像的圆半径,从而求取鱼眼图像的中心点坐标和鱼眼图像的校正程序后,即可得到无畸变图像,具体处理过程如下:像的粗略轮廓的图像的半径相对比,以便于将鱼眼图像的大概1)标定坐标轮廓重新调整处理,变的更为精确和直观。

假定畸变校正的鱼镜头中心的畸变可以忽略为零,以镜头为中心,离镜头越眼图片的半径中的行坐标曲线和列坐标曲线不相等,则我们需远的地方畸变越大。

以镜头为中心标定坐标图,对图像进行坐要将畸变校正的鱼眼图像中的园的半径的曲线与下面的公式相标的标定,按正方形均匀排列圆点,如图1所示。

乘,然后就可以变换为普通的标准圆的图像。

下面公式中(u,v)是畸变校正的鱼眼图片的中心点,β为畸变校正的鱼眼图像行和列的比值。

第六章 6.7图像复原-几何畸变校正

第六章 6.7图像复原-几何畸变校正
x′ = ax + by + c y′ = dx + ey + f
把三个点映射到它们失真后的位置
解这6个方程可求得a,b,c,d,e,f。
u1 = ar1 + bs1 + c v = dr + es + f 1 1 1 u2 = ar2 + bs2 + c v2 = dr2 + es2 + f u3 = ar3 + bs3 + c v3 = dr3 + es3 + f
【分析】由于失真导致图像中本来应该出现在像素(x,y) 上的灰度值出现在(x',y')上了。失真的复原问题实际上 是映射变换问题。
给定g(x', y')、h1(x, y)、h2(x, y)后的复原处理过程 给定 、 、 后的复原处理过程
①找出f(x, y)中的每一点(x0, y0)在g(x', y')中的对应位置。
几何畸变校正
在图像的获取或显示过程中往往会产生几何失真。 例如,成像系统有一定的几何非线性。这主要是由于视 像管摄像机及阴极射线管显示器的扫描偏转系统有一定 的非线性,因此会造成枕形失真或桶形失真。 由卫星摄取的地球表面的图像往往覆盖较大的面积,由 于地球表面呈球形,这样摄取的平面图像也将会有较大 的几何失真。 由于斜视角度获得的图像的透视失真。
(α , β ) = [h1 (x0 , y0 ), h2 (x0 , y0 )]
α和β不一定是整数,通常(α, β)不与g(x', y')中的任何点重合。 ②找出g(x', y')中与(α, β)最靠近的点(x'i, y'i),令f(x0, y0)=g(x', y') ,也就是把点的灰度值赋予f(x0, y0) 。如此逐点作下去, 直到整个图像,则几何畸变得到校正。 ③如果不采用②中的灰度值的代换方法也可以采用内插法。 假定找到点(α, β) 后,在g(x', y')中找出包围着(α, β)的4个邻近 的数字点(x'i, y'i)、(x'i+1, y'i+1)、(x'i+2, y'i+2)、(x'i+3, y'i+3)。

photoscan处理流程--相机标定--畸变改正

一、相机标定
主要利用PhotoScan强大的空三处理功能解算准确的相机内参数和畸变参数,其数据处理流程和生成正射影像的处理流程类似,包括添加影像—对齐影像(选择高精度)--优化相机参数—导出相机参数。

1、添加影像
2、对齐影像,类似于空三
3、优化相机参数
菜单:工具—优化相机,勾选需要优化的相机参数
4、导出相机参数
二、利用PhotoScan进行畸变参数改正
当测区影像数量较多,利用全部影像进行相机的畸变参数解算计算量是非常大的,且影像质量不好的影像会降低估计参数的精度,因此畸变参数估计时可以只选取纹理比较丰富的部分区域影像,利用导出的相机参数文件实现全部影像的畸变改正,需要指出的是如果是利用PhtotoScan改正畸变,需要导出PhtotoScan自己的格式,其他格式无法使用。

操作步骤为添加影像—导入畸变参数—导出未畸变影像。

1、添加影像
2、导入相机畸变参数
在相机参数界面导入相机畸变参数文件。

3、导出未畸变影像
菜单:工具—导出—未畸变影像,在对话框内选择所有相机,然后点击OK选择保存文件夹路径。

畸变矫正原理

畸变矫正的原理主要是通过建立数学模型描述畸变前和畸变后的点位置的对应关系,然后通过反向映射,将畸变后的位置的像素值赋给原位置,从而得到校正后的图像。

具体来说,畸变矫正可以分为两个步骤:
1. 建立畸变模型:这个步骤主要是通过找到畸变前和畸变后的点位置的对应关系,建立数学模型。

一般来说,这个模型可以描述切向畸变和径向畸变等不同类型的畸变。

2. 执行矫正操作:这个步骤主要是通过反向映射,将畸变后的位置的像素值赋给原位置,从而得到校正后的图像。

这个过程中需要进行插值或者取整操作。

在完成这两个步骤之后,就可以得到校正后的图像了。

畸变矫正的原理主要是基于几何畸变模型,这些模型可以描述图像中像素位置的偏移或变形。

常见的几何畸变模型包括径向畸变、切向畸变、离心畸变等。

在建立畸变模型时,需要选择适当的模型来描述图像中的畸变。

一旦建立了畸变模型,就可以使用该模型来估计每个像素的正确位置。

然后,可以使用插值算法将周围的像素值分配给这些正确的位置,从而生成校正后的图像。

常用的插值算法包括最近邻插值、双线性插值和双三次插值等。

在某些情况下,也可以使用深度学习技术来进行畸变矫正。

例如,卷积神经网络(CNN)可以用于学习如何将畸变图像转换为校正后的图像。

这种方法的优点是可以在不考虑具体相机参数的情况下自动适应各种类型的畸变。

最后,需要指出的是,畸变矫正是一个复杂的过程,需要仔细的调整和优化。

同时,也需要对不同的相机和镜头进行测试和分析,以确定最佳的矫正方法。

Photoshop中的图像校正工具:修复失真的关键

Photoshop中的图像校正工具:修复失真的关键Photoshop是一款强大的图像处理工具,它提供了许多有用的功能来修复和校正图像中的失真问题。

在这篇文章中,我将详细介绍Photoshop中的图像校正工具,以及修复失真的关键步骤。

一、Photoshop中的图像校正工具概述图像校正工具是Photoshop中用于纠正图像中失真问题的功能。

它们可以修复图像中的扭曲、畸变、色彩失真等问题,并提升图像的质量和准确性。

以下是几个常用的图像校正工具:1. 镜头校正:这是一个非常有用的工具,它可以校正因摄像机镜头导致的图像畸变问题。

通过输入相机和镜头的参数,镜头校正工具可以自动纠正图像中的畸变,并使图像更加真实和准确。

2. 透视校正:透视校正工具主要用于纠正图像中因透视摄影而导致的失真。

它可以调整图像的透视和变形,使得直线变得更加平直和垂直,提升图像的逼真度和专业性。

3. 畸变校正:畸变校正工具是用于修复图像中其他类型的失真,如鱼眼效果、形变等。

它可以通过调整图像中不同区域的变形参数,恢复图像的原貌,并提升视觉效果。

二、修复失真的关键步骤1. 导入图像:打开Photoshop软件,点击菜单栏的“文件”,选择“打开”命令,导入需要修复的图像。

2. 选择适当的图像校正工具:根据图像中的失真问题,选择合适的图像校正工具。

如需要修复镜头导致的畸变,可以使用镜头校正工具;如果出现透视失真,可以选择透视校正工具;对于其他类型的失真,可以使用畸变校正工具。

3. 调整参数:根据图像的具体情况,调整校正工具的参数。

比如,在镜头校正工具中,可以输入相机和镜头的参数,或者使用预设参数进行修正。

4. 应用校正效果:点击校正工具界面上的“应用”按钮,对图像应用校正效果。

根据图像的复杂性和失真程度,可能需要多次调整参数和应用校正效果来达到最佳效果。

5. 保存图像:完成校正后,可以点击菜单栏的“文件”,选择“保存”命令,保存修复后的图像。

Final Cut Pro中的图像纠正与畸变修复技巧

Final Cut Pro中的图像纠正与畸变修复技巧图像纠正和畸变修复是视频编辑中常见的任务之一。

在使用Final Cut Pro进行视频编辑时,掌握一些图像纠正和畸变修复的技巧,可以让你的视频更加专业和令人印象深刻。

下面将介绍一些Final Cut Pro中常用的图像纠正和畸变修复技巧。

1. 手动校正Final Cut Pro提供了一些手动校正工具,可以帮助你调整图像的水平和垂直位置以及旋转角度。

首先,在选定需要调整的视频素材后,点击“效果”选项卡,并选择“视频效果”中的“校正”。

在校正的选项中,你可以通过调整滑块来实现图像的自由旋转和缩放,以及对齐图像的水平和垂直位置。

2. 视频稳定图像抖动是拍摄视频过程中常见的问题之一。

Final Cut Pro提供了视频稳定工具,可以帮助你稳定抖动的视频素材。

选中需要修复的视频素材后,点击“效果”选项卡,并在“视频效果”中选择“稳定”。

在稳定的选项中,你可以通过调整滑块来对视频进行稳定处理。

3. 镜头畸变修复镜头畸变是一种常见的问题,尤其是广角镜头拍摄的素材中容易出现畸变效果。

Final Cut Pro提供了镜头畸变修复工具,可以帮助你修复广角镜头拍摄的素材中的畸变效果。

选择需要修复的视频素材后,点击“效果”选项卡,并在“视频效果”中选择“畸变修复”。

在畸变修复的选项中,你可以通过调整滑块来修复不同类型的畸变效果。

4. 色彩校正在一些情况下,视频素材的色彩可能不准确,需要进行校正。

Final Cut Pro提供了多种色彩校正工具,可以帮助你调整视频素材的亮度、对比度、色相和饱和度等参数。

选择需要调整的视频素材后,点击“效果”选项卡,并在“视频效果”中选择“色彩校正”。

在色彩校正的选项中,你可以通过调整各个参数的滑块来实现色彩的修正。

5. 去噪和修复视频素材中可能存在噪点或其他干扰,Final Cut Pro提供了去噪和修复工具,可以帮助你清除噪点和修复干扰。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图像畸变校正OPENCV 使用USB摄像头,采集一副图像,然后对图像畸变校正。摄像头事先标定好 #include "cv.h" #include "highgui.h" #include "cxcore.h" #include "cvcam.h"

//图像的像素直接提取 #define _I(img,x,y) ((unsigned char*)((img)->imageData + (img)->widthStep*(y)))[(x)] //亚像素级灰度值

#define _IF(image,x,y) ( ((int)(x+1)-(x))*((int)(y+1)-(y))*_I((image),(int)(x),(int)(y)) + ((int)(x+1)-(x))*((y)-(int)(y))*_I((image),(int)(x),(int)(y+1)) + ((x)-(int)(x))*((int)(y+1)-(y))*_I((image),(int)(x+1),(int)(y)) + ((x)-(int)(x))*((y)-(int)(y))*_I((image),(int)(x+1),(int)(y+1)) )//插值后的像素值(IN表示interpolation),x、y可以为小数

void callback(IplImage* image); void main() {

int ncams = cvcamGetCamerasCount( );//返回可以访问的摄像头数目 HWND mywin; cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); cvcamSetProperty(0, CVCAM_PROP_RENDER, CVCAMTRUE); mywin = (HWND)cvGetWindowHandle("cvcam window"); cvcamSetProperty(0, CVCAM_PROP_WINDOW, &mywin); cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callback);

//cvcamGetProperty(0, CVCAM_VIDEOFORMAT,NULL); cvNamedWindow( "径向矫正1", 1 );//创建窗口 cvNamedWindow( "径向矫正2", 1 );//创建窗口

cvcamInit( ); cvcamStart( );

cvWaitKey(0); cvcamStop( ); cvcamExit( ); cvDestroyWindow( "径向矫正1" );//销毁窗口 cvDestroyWindow( "径向矫正2" );//销毁窗口 } void callback(IplImage* image) {

IplImage* Show1 = cvCreateImage( cvSize(320,240), IPL_DEPTH_8U, 1); IplImage* Show2 = cvCreateImage( cvSize(420,340), IPL_DEPTH_8U, 1); IplImage* ImageC1 = cvCreateImage( cvSize(320,240), IPL_DEPTH_8U, 1);

//转换为灰度图 cvCvtColor( image, ImageC1, CV_RGB2GRAY); cvFlip( ImageC1, NULL, 0);

double *mi; double *md;

mi = new double[3*3]; md = new double[4];

CvMat intrinsic_matrix,distortion_coeffs; //摄像机内参数 cvInitMatHeader(&intrinsic_matrix,3,3,CV_64FC1,mi);

//镜头畸变参数 cvInitMatHeader(&distortion_coeffs,1,4,CV_64FC1,md);

///////////////////////////////////////////////// ////////////////////////////320*240 120度广角镜头 //参数由matlab获得 double fc1,fc2,cc1,cc2,kc1,kc2,kc3,kc4; fc1 = 667.23923/2.5; fc2 = 669.78156/2.5; cc1 = 429.96933/2.5; cc2 = 351.48350/2.5; kc1 = -0.40100; kc2 = 0.19463; kc3 = 0.00508; kc4 = -0.00051;

cvmSet(&intrinsic_matrix, 0, 0, fc1); cvmSet(&intrinsic_matrix, 0, 1, 0); cvmSet(&intrinsic_matrix, 0, 2, cc1); cvmSet(&intrinsic_matrix, 1, 0, 0); cvmSet(&intrinsic_matrix, 1, 1, fc2); cvmSet(&intrinsic_matrix, 1, 2, cc2); cvmSet(&intrinsic_matrix, 2, 0, 0); cvmSet(&intrinsic_matrix, 2, 1, 0); cvmSet(&intrinsic_matrix, 2, 2, 1);

cvmSet(&distortion_coeffs, 0, 0, kc1); cvmSet(&distortion_coeffs, 0, 1, kc2); cvmSet(&distortion_coeffs, 0, 2, kc3); cvmSet(&distortion_coeffs, 0, 3, kc4); ////////////////////////////320*240 120度广角镜头 /////////////////////////////////////////////////

//矫正畸变(opencv) cvUndistort2( ImageC1, Show1, &intrinsic_matrix, &distortion_coeffs);

//矫正畸变 for (int nx=0; nx<420; nx++) { for (int ny=0; ny<340; ny++) { double x=nx-50; double y=ny-50; double xx=(x-cc1)/fc1; double yy=(y-cc2)/fc2; double r2=pow(xx,2)+pow(yy,2); double r4=pow(r2,2); double xxx=xx*(1+kc1*r2+kc2*r4)+2*kc3*xx*yy+kc4*(r2+2*xx*xx); double yyy=yy*(1+kc1*r2+kc2*r4)+2*kc4*xx*yy+kc3*(r2+2*yy*yy); double xxxx = xxx*fc1+cc1; double yyyy = yyy*fc2+cc2; if (xxxx>0 && xxxx<320 && yyyy>0 && yyyy<240) { _I(Show2,nx,ny) = (int)_IF(ImageC1,xxxx,yyyy); } else { _I(Show2,nx,ny) = 0; }

} } //画线 cvLine( Show1, cvPoint(0,10), cvPoint(320,10), cvScalar(255,255,255),3 ); cvLine( Show1, cvPoint(0,230), cvPoint(320,230), cvScalar(255,255,255),3 ); cvLine( Show1, cvPoint(10,0), cvPoint(10,240), cvScalar(255,255,255),3 ); cvLine( Show1, cvPoint(310,0), cvPoint(310,240), cvScalar(255,255,255),3 ); cvLine( Show1, cvPoint(0,0), cvPoint(320,240), cvScalar(255,255,255),3 ); cvLine( Show1, cvPoint(0,240), cvPoint(320,0), cvScalar(255,255,255),3 );

cvLine( Show1, cvPoint(0,10), cvPoint(320,10), cvScalar(0,0,0) ); cvLine( Show1, cvPoint(0,230), cvPoint(320,230), cvScalar(0,0,0) ); cvLine( Show1, cvPoint(10,0), cvPoint(10,240), cvScalar(0,0,0) ); cvLine( Show1, cvPoint(310,0), cvPoint(310,240), cvScalar(0,0,0) ); cvLine( Show1, cvPoint(0,0), cvPoint(320,240), cvScalar(0,0,0) ); cvLine( Show1, cvPoint(0,240), cvPoint(320,0), cvScalar(0,0,0) );

//显示 cvShowImage("径向矫正1", Show1); cvShowImage("径向矫正2", Show2); cvWaitKey(1); cvReleaseImage( &Show1 ); cvReleaseImage( &Show2 ); cvReleaseImage( &ImageC1 );

}

相关文档
最新文档