图像畸变校正word版

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

实验五 图像形状及颜色畸变的校正
一、 实验目的与要求
让学生了解数字图像的数学表达及相关概念,通过实验让学生加深对数学在相关学科的应用价值的认识,培养学生的实际操作能力,并引导他们建立基础学科在处理具体问题时方法上联系。

二、 问题描述
对于在颜色或形状上发生畸变的图像,通过数学的方法实现校正。

三、问题分析
先由教师讲授数字图像的基本概念(包括图像的数学化、采样、量化、灰度、各种数学图像的文件格式、表色系、颜色映像等),再通过具体的实例给学生示范对于在颜色或形状上发生畸变的图像如何通过数学的方法实现校正的过程。

最后让学生动手完成对某些特殊畸变的图像的校正,写出数学原理和实验报告。

四、背景知识介绍
1. 数字图像的数值描述及分类
图像是对客观存在物体的一种相似性的生动模仿与描述,是物体的一种不完全的不精确的描述。

数字图像是用一个数字阵列来表示的图像。

数字阵列中的每个数字,表示数字图像的一个最小单位,称为像素。

采样是将空域上或时域上连续的图像变换成离散采样点(像素)集合的一种操作。

对一幅图像采样后,若每行像素为M 个,每列像素为N 个,则图像大小为M ⨯N 个像素。

例如,一幅640⨯480的图像,就表示这幅连续图像在长、宽方向上分别分成640个和480个像素。

显然,想要得到更加清晰的图像质量,就要提高图像的采样像素点数,即使用更多的像素点来表示该图像。

客观世界是三维的,从客观场景中所拍摄到的图像是二维信息。

因此,一幅图像可以定义为一个二维函数f(x,y),其中x,y 是空间坐标。

对任何一对空间坐标(x,y)上的幅值f(x,y),成为表示图像在该点上的强度或灰度,或简称为像素值。

因为矩阵是二维结构的数据,同时量化值取整数,因此,一幅数字图像可以用一个整数矩阵来表示。

矩阵的元素位置(i,j),就对应于数字图像上的一个像素点的位置。

矩阵元素的值f(i,j)就是对应像素点上的像素值。

值得注意的是矩阵中元素f(i,j)的坐标含义是i 为行坐标,j 是列坐标。

而像素f(x,y )的坐标含义一般指直角坐标系中的坐标,两者的差异如下图:
对应于不同的场景内容,数字图像可以大致分为二值图像,灰度图像,彩色
列坐标(j) 行坐标(i) 矩阵元素
f (i ,j) 0
纵坐标(y)
横坐标(x) 像素f(x,y) 图 1.1 矩阵坐标系与直角坐标系
图像三类。

1)二值图像
它是指每个像素不是黑就是白,其灰度值没有中间过度的图像。

二值图像对画面的细节信息比较粗略,适合于文字信息图像的描述。

它的矩阵取值非常简单,即f(i,j)=0(黑),或f(i,j)=1(白),除此之外没有其他的取值。

当然,0和1表示黑或白都只是人定义的,可以人为地反过来定义。

这种图像具有数据量小的优点。

2)灰度图像
它是指每个像素的信息由一个量化后的灰度级来描述的数字图像,灰度图像中不包含彩色信息。

标准灰度图像中每个像素的灰度有一个字节表示,灰度级数位256级,每个像素可以是0~255(从纯黑到纯白)之间的任何一个值。

值越接近0就越黑,越接近255就越白。

3)彩色图像
常用的图像彩色模式有RGB模式、CMYK模式和HIS模式,一般情况下只使用RGB模式。

它是根据三基色成像原理来实现对自然界中的色彩描述的。

这一原理认为,自然界中的所有颜色都可以由红,绿,蓝(R,G,B)三基色组合而成。

如果三种基色的灰度分别用一个字节(8bit)表示,则三基色之间不同的灰度组合可以形成不同的颜色。

2.数字图像质量决定因素
数字图像的效果与以下几个评价参数有关。

1)图像分辨率即采样所获得的图像总像素的多少。

2)采样密度即在图像上单位长度所包含的采样点数。

采样密度的倒数是像素间距。

3)采样频率即一秒钟采样的次数。

它反映了采样点之间的间隔大小,采样频率越高,丢失的信息越少,图像的质量越好。

4)扫描分辨率表示一台扫描仪输入图像的细微程度,指每英寸扫描所得的点,单位是DPI(DotPerInch)。

数字越大,表示被扫描的图像转化为数字化图像越逼真,扫描仪质量也越好。

3.彩色空间
1)三基色原理
近代的三色学说研究认为,人眼的视网膜中存在着三种锥体细胞,它们包含不同的色素,对光的吸收和反射特性不同,对于不同的光就有不同的颜色感觉.研究发现,第一种锥体细胞专门感受红光,第二和第三种锥体细胞则分别感受绿光和蓝光.它们三者共同作用,使人们产生了不同的颜色感觉. 这三种色光以不同比例混合,几乎可以得到自然界中的一切色光,混合色域最大;而且这三种色光具有独立性,其中一种原色不能由另外的原色光混合而成,由此,称红,绿,蓝为色光三原色. 为了统一认识,1931年国际照明委员会(CIE)规定了三原色的波长nmR0.700=λ,nmG1.546=λ,nmB8.435=λ。

2)彩色的基本特征
色调(hue) 色调又称为色相,是当人眼看到一种或多种波长的光时所产生的彩色感觉,它反映颜色的种类,是决定颜色的基本特性.色调用红,橙,黄,绿,青,蓝,靛,紫等术语来刻画. 不透明物体的色调是指该物体在日光的照射下,所反射的各光谱成分作用于人眼的综合效果;透明物体的色调则是透过该物体的光谱综合作用的效果。

饱和度(saturation) 饱和度是指颜色的纯度,即色彩含有某种单色光的纯净程度,它可用来区别颜色的深浅程度.对于同一色调的彩色光,饱和度越深颜色越鲜明或说越纯,例如鲜红色饱和度高,而粉红色的饱和度低.完全饱和的颜色是指没有渗入白光所呈现的颜色,例如仅由单一波长组成的光谱色就是完全饱和的颜色。

亮度(brightness) 亮度是视觉系统对可见物体辐射或者发光多少的感知属性.亮度是光作用于人眼时所引起的明亮程度的感觉,它与被观察物体的发光强度有关.由于其强度的不同,看起来可能会亮一些或暗一些.对于同一物体,照射光越强,反射光也越强,感觉越亮;对于不同的物体在相同照射情况下,反射越强者看起来越亮。

通常把色调和饱和度通称为色度.亮度是用来表示某彩色光的明亮程度,而色度则表示颜色的类别与深浅程度。

五、实验过程
1.图像畸变介绍
从数字图像处理的观点来考察畸变校正, 实际上是一个图像恢复的过程, 是对一幅退化了的图像进行恢复。

在图像处理中,图像质量的改善和校正技术,也就是图像复原,当初是在处理从人造卫星发送回来的劣质图像的过程中发展、完善的。

目前,图像畸变校正的应用领域越来越广,几乎所有涉及应用扫描和成像的领域都需要畸变校正。

图像在生成和传送的过程中,很可能会产生畸变,如:偏色、模糊、几何失真、几何倾斜等等。

前几种失真主要是体现在显示器上,而后一种失真则多与图像集角度有关。

不正确的显影,打印、扫描,抓拍受反射光线的影响等方式,都会使图像产生偏色现像。

模糊、几何畸变主要是在仪器采集图片过程中产生,大多是因机器故障或操作不当影响导致,如在医学成像方面。

而几何空间失真广泛存在于各种实际工程应用中,尤其是在遥感、遥测等领域。

2.图像畸变校正过程所用到的重要工具
灰度直方图是关于灰度级分布的函数,是对图象中灰度级分布的统计。

灰度直方图是将数字图象中的所有像素,按照灰度值的大小,统计其所出现的频度。

通常,灰度直方图的横坐标表示灰度值,纵坐标为想像素个数。

直方图上的一个点的含义是,图像存在的等于某个灰度值的像素个数的多少。

这样通过灰度直方图就可以对图像的某些整体效果进行描述。

从数学上讲,图像的灰度直方图是图像各灰度值统计特征与图像灰度值出现的频率。

从图形上来讲,它是一个一维曲线,表征了图像的最基本的统计特征。

作为表征图像特征的信息而在图像处理中起着重要的作用。

由于直方图反映了图像的灰度分布状况,所以从对图像的观察与分析,到对图像处理结果的评价,灰度直方图都可以说是最简单、最有效的工具。

3.图像颜色畸变校正介绍
图像颜色畸变现象可以是由摄像器材导致,也可以是由于真实环境本身就偏色导致,还有的是由于图像放置过久氧化、老化导致。

无论其产生的原因如何,其校正方法都是类似的。

图像颜色畸变校正在社会生活、工作中应用十分广泛。

小到家庭生活图像处理,大到医学成像应用、罪犯识别和国防侦察,都离不开它。

由于灰度图比较简单,因此本文跳过灰度图,直接研究彩色图的颜色畸变校正,但无论是灰度图还是彩色图,其校正原理都是一样的,程序实现上只须对程序进行小小的调整。

如果用Matlab显示颜色畸变的图像RGB基色直方图,发现相对正常图像,颜色畸变的图像的直方图的三种基色的直方图中至少有一个直方图的像素明显集中集中在一处,或则集中在0处或则集中在255处,而另一部分有空缺,或则集中在中间而两边空,因此通过调整该直方图的像素点的像素值在区间[0,255]上的分布来解决图像颜色畸变问题。

如果直方图中像素集中在0一边则说明该基色偏暗,如果集中在255处则说明该基色偏亮。

下图是一有颜色畸变的图像的基色B的直方图。

图1 基色B的直方图
很明显几乎所有像素点都集中在区间[a,b]上,这是偏暗的情况。

那么要做的是把代表基色B的矩阵的数据拉伸,使得区间[a,b]扩大为区间[a,c]。

只要做以下处理即可得到以上目的。

对每一个x ,x在[a,b]上,x *(c-a)/(b-a),而所有的y,y在区间[b,c]
开始
MATLAB中的算法实现如下:
function dealcolor(pic,k,d)
a=imread(pic); %提取指定图像到矩阵a
b=double(a); %将矩阵a的数据转化为double型
[m,n]=size(b(:,:,k)); %取图像矩阵的行列数
fr=255/d; %设定拉伸系数
for i=1:m % 二重循环对矩阵内的每一个数据进行处理
for j=1:n
bm=b(i,j,k)*fr; % 拉伸处理
if bm>255 %将所有值大于255的点都设为255
bm=255;
end
b(i,j,k)=bm;
end
end
c=uint8(b); %将矩阵b转化为8个字节的整型数据
image(c); %显示处理过的图像
注释:a ———要处理的图像矩阵,是一个三维矩阵
pic ———要处理的图像的路径
k ———要处理的第几个基色矩阵,1、2、3分别代表R、G、B
d ———向量,它的值是要拉伸的像素值中的最大值,0~255之间
4.图像颜色畸变校正实例
对于已经发生颜色失真的图像(下图),通过数学变换进行校正。

图2 发生了颜色畸变的图像
可以看出,图像明显偏黄。

下面研究它的RGB直方图,确定拉伸系数。

图 3 图2的RGB直方图
由于R、G的直方图则在0到255之间分布较为均匀,而在基色B的直方图中,像素值的分布明显是集中在140以下的部分,而基本没有多少点在140到255之间,这说明基色B偏暗。

像素值在0~255之间分布偏向一边是导致这幅图像颜色畸变的原因,因此从基色B着手处理。

既然基色B直方图中像素分布不均匀,那么就应该把像素值在0到140之间的点的像素值拉伸以至它们均匀分布在0到255上。

因此做以下的处理。

将代表基色B的矩阵的每一个小于140的元素的值都乘以系数 255/140 ,显然这样可以使区间[0,140] 拉伸为[0,255],以达到需要的效果。

因此处理函数的输入参数为:
dealcolor(‘color.jpg’,3,140);
处理后得到的图片如下:
图4 校正后的图像
很明显图像整体色质得到了很好的改善。

在这里参数d 的值可以不断地变换,对比处理后的图像画质,选定一个最好的值作为参数d 的值来校正图像。

经过测试,发现d 的值在区间[130,160]得到的校正图像基本没什么大的差别。

以上讨论的是单通道(单个基色直方图)向上调整(向255拉伸)的情况,而双通道、三通道需要调整的情况跟单通道的调整方法是一样的,我们只需要研究各个直方图,拿出需要的参数值,多次调用函数function dealcolor(pic,n,d) 即可。

而对于需要向两边调整和向下调整(向0拉伸)的情况则只须先将需要拉伸的区间平移到0处,再进行向上调整。

这些只需要对算法做一个小小的改动就可以实现。

function dealcolor(pic,n,d)
% d是一个包含两个元素的向量, d(1)表示拉伸区间的下界d(2)表示拉伸区间的上界
a=imread(pic);
b=double(a);
[m,n]=size(b(:,:,n));
fr=255/(d(2)-d(1));
for i=1:m % 二重循环对矩阵内的每一个数据进行处理
for j=1:n
bb= b(i,j,n)-d(1); %将每个元素值减去d(1)向0靠拢
if bb<0 %将所有处理前值小于d(1)的点的处理后的值设置为0
bb=0;
end
bm=bb*fr; % 拉伸处理
if bm>255 %将所有处理后值大于255的点都设为255
bm=255;
end
b(i,j,n)=bm;
end
end
c=uint8(b); %将矩阵b转化为8个字节的整型数据
image(c);
5.图像模糊校正算法介绍
图像模糊校正的应用与偏色校正的应用一样广泛而重要,在很多领域它们具有同样的重要地位:如医学成像、罪犯识别、国防侦察等等。

虽然图像模糊校正最先是由处理间谍卫星图像而发展起来的,但是随着摄像设备特别是随着摄像监控技术在社会管理中的广泛应用,警察可以轻易从监控设备得到的犯罪罪犯图像资料。

但由于技术上的缺陷,得到的图像资料通常都是模糊的,如果不进行相关的处理很难得到罪犯的特征,追缉工作难度也会增加。

图像的灰度变化情况可以表现为一曲线。

当读入一个图像后,灰度变化就转变成了矩阵数据的变化。

反映数据变化的数学手段可以采用微分算子。

从数学的微分含义来看,“一阶微分”是描述“数据的变化率”,“二阶微分”是描述“数据变化率的变化率”。

在感应灰度变化方面,二阶微分比一阶微分更具敏感性,尤其是对斜坡渐变的细节。

因此采用二阶微分算子来处理。

最简单的各向同性微分算子是拉普拉斯微分算子。

设原图为f(x,y),一个二
维的拉普拉斯微分算子定义为:
22222
y f x f f ∂∂+∂∂=∇ 将它展开就得到 )1,()1,(),1(),1(),(42+---+---=∇y x f y x f y x f y x f y x f f 。

写成图像处理运
算模版的形式就是⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡----=010141010L 。

算法的流程为:
设处理后的图像为g(x,y),则 ),(),(),(2y x f y x f y x g ∇+=。

用模板表示则是
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡----=010*******L ,模板中心点就是要处理的像素点。

如果连对角线方向都考虑的话,模板的形式就表现为⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡--------=1111911111L 。

由于模板是一个3阶矩阵,所以模板处理不了图像矩阵边缘的点。

将这些处理不了的点像素值都设置为255。

在Matlab 中的算法实现为:
function pic_tem = pick_tem(b,x,y,j,tem_n) % b 是一个三维矩阵,j 是代表第几层矩阵
%tem_n 代表模板号0代表采用第一种模板,1代表采用第二种模板
if tem_n==0 %第一种模板
%返回二阶微分处理后的值
pic_tem=5*b(y,x,j)-(b(y,x-1,j)+b(y+1,x,j)+b(y-1,x,j)+b(y,x+1,j)); else %第二种模板
%返回二阶微分处理后的值
pic_tem=9*b(y,x,j)-(b(y-1,x-1,j)+b(y-1,x,j)+b(y-1,x+1,j)+b(y,x-1,j)+b(y+1,x+1,j)+b(y+1,x-1,j)+b(y+1,x,j)+b(y+1,x+1,j));
end
function faintness(pic,tem_n)
%pic 代表处理的图片的路径,tem_n 代表采用第几种模板
a=imread(pic); %导入图像,并把数据存放到三维矩阵a 中
b=double(a); %将数据转化为双精度
[h,w,k]=size(b); %取矩阵的维数
g=zeros(h,w,k)+255; %生成一个与原图像矩阵有相同维数的矩阵g
for y=2:h-1 %剔除图像矩阵最外一层的点,处理可以被模板包含的点 for x=2:w-1
for j=1:k
g(y,x,j)=pick_tem(b,x,y,j,tem_n); %采用二阶微分算子处理,返回处理点(x,y )后的像素值
end
end
end
image(uint8(g));%显示处理后的图像
6.图像模糊校正实例
下面的图像是一幅因调焦不准确而导致模糊了的图像。

根据上述算法,用Matlab 对该图像进行校正。

图5 需要处理的照片
L处理上图,函数faintnesss输入参数如下:先采用模板
faintness(’ faintness.jpg’,0);
处理的结果为:
L处理后的图像
图6 用
L处理,函数faintnesss输入参数如下
再采用模板
1
faintness(’ faintness.jpg’,1);
处理的结果为:
图7 用模板
L处理后的图像
1
图6和图7都比原图5要清晰得多,说明采用二阶微分算子来处理模糊是正确有效的。

对比图6和图7,发现图7的线条轮廓比图6要清晰,但是相对图6,图7的噪音也加强了很多。

这就是采用二阶微分处理模糊图像的一个弊端——加强噪音。

以上所研究的都是整幅图像模糊需要校正的情况,而局部模糊的图像校正跟全局模糊校正都是一样的基理。

只须将需要校正的区域提取出来,把提取出来的图像区域作为一个图像整体看待,再用全局处理的方法来处理。

那么可以根据这个原理把函数程序faintness一般化到局部可选情况。

function faintness(pic,tem_n,x1,y1,x2,y2) %(x1,y1)表示局部区域左上角点
%(x2,y2)表示局部区域右下角点
a=imread(pic);
b=double(a);
[h,w,k]=size(b);
g=b; % 替代g=zeros(h,w,k)+255;
for y=y1:y2
for x=x1:x2
for j=1:k
g(y,x,j)=pick_tem(b,j,tem_n);
end
end
end
image(uint8(g));
7.图像几何畸变校正算法介绍
几何畸变广泛存在于各种实际工程应用中,尤其是在遥感、遥测等领域。


前, 利用数字图像技术进行畸变校正主要应用于两个领域: 一是医用内窥镜图像的校正, 目的是测量图像上病变区域的大小; 另一应用是机器视觉领域, 是为了提高它的视觉定位精度, 正确完成动作。

几何畸变有桶形畸变、枕形畸变、几何倾斜等等。

这里选择桶形畸变的校正作为研究的对象。

对于畸变的光学系统,畸变空间中的直线在像空间中一般不再是直线,而只有通过对称中心的直线是例外。

因此在进行桶形畸变校正时须先找出对称中心,再进行通用的几何畸变校正过程。

桶形畸变校正一般步骤:
(1)找出畸变图对称中心,将畸变图代表的地址空间关系转换为以对称中心为原点的空间关系。

(2)空间变换:对输入图像(畸变图)上像素重新排列以恢复原空间关系。

也就是利用地址映射关系为校正图空间上的每一个点找到它们在畸变图空间上的对应点。

(3)灰度插值:对空间变换后的像素赋予相应的灰度值以恢复原位置的灰度值。

几何畸变的校正要使用几何(坐标)变换,包括平行移动、旋转、扩大缩小等简单的变换。

在这里,先在直角坐标系下研究地址映射关系,在程序中则使用矩阵坐标系。

设[f(x,y)]是原图,[f(u,v)]是发生畸变后的图像。

畸变校正的基本思想是,找出由(u,v) (x,y)的坐标变换αT (地址映射),然后令:)),((),(v u T f y x f α= α为参数向量。

若畸变只是简单的纵横比的改变和倾斜,那么仿射变换可以校正这种畸变。

取:{}F E D C B A T ,,,,,:=αα
[]C Bx Au x ++= ][F Ev Du y ++= []x 表示去最接近x 的整数
若能得到参数α的估计,问题就可以解决了。

但一般的畸变都不只是简单的纵横比的改变和倾斜,通常遇到的都是空间扭曲型几何畸变,俗语讲就是橡胶层面拉伸。

它是曲线畸变,这里采用二次多项式来模拟它,可表示为:
2
5423210y a xy a x a y a x a a u +++++=(1)
25423210y b xy b x b y b x b b v +++++=(2) 同样,只要可以取得参数),(i i b a 的估计,畸变函数便可知,那么原则上,可以通过上式多项式变换来获得修正的空间扭曲映射。

(1)和(2)都是一个有6个参数的二元二次方程,那么只要在畸变图和校正图上各取六对对应点(其中从校正图上的点是估计值)就可以通过解方程组得到参数),(i i b a 的估计,理论上,取的对应点对数越多得到的参数),(i i b a 估计就越精确。

设取m 对对应点,用向量来表示为
],...,,[21m t u u u U = ]
,...,,[21m t v v v V =
⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡=2222222222
211121111.....
.......11m m m m m m y y x x y x y y x x y x y y x x y x A 其系数 ],...,,[10m t a a a a = ],...,,[10m t b b b b =
假设所取的m 对对应点组成的矩阵A 可逆,也就是说m 对对应点线性不相关,则容易计算得到系数),(i i b a :U A a -= V A b -= 由于采用灰度插值,所以在校正的处理过程是对校正图上每一点映射到畸变图,然后通过灰度插值来得到这一点的灰度值。

因此校正所采用的是地址逆映射: []a y xy x y x u *,,,,,122= []
b y xy x y x v *,,,,,122= (∆) 由地址映射(∆)计算得到的(u,v )可能是非整数,而畸变图[f(u,v)]是数字图像,其像素值仅在坐标为整数处有定义,所以在非整数处的像素值要用其周围一些整数处的像素值来计算,这叫灰度插值。

灰度插值有邻近插值法、双线性插值法等等。

邻近插值法得到的图像通常都会出现锯齿现象,而双线性插值法得到的图像比邻近插值法得到的图像精确得多。

通常情况下,双线性插值的精确度已经可以满足一般图像处理的要求,并不需要更高精确度的灰度插值。

因此在这里将采用双线性插值法。

双线性插值利用(u,v)周围的四个最邻近像素的灰度值,根据下面方法来计算(u,v)处的灰度值。

设(u,v)四个邻近像素点为ABCD 坐标分别为(i,j), (i+1,j), (i,j+1),(i+1,j+1)
设 i u -=α j v -=β
首先先计算出E,F 两处的灰度值,f(E)和f(F)
f(E)=β[f(C)-f(A)]+f(A) f(F)=β[f(D)-f(B)]+f(B)
B C
D E F
(i,j) (i,j+1) (i+1,j)
再计算(u,v): f(u,v)= [f(F)-f(E)]+f(E)
此f(u,v)值代表的就是校正后图像中(x,y)处的灰度值。

算法的流程为:
在Matlab中的算法实现为:
function gmodify(pic,uv,gm,og) %pic表示要处理的图像的路径文件名
%uv是一个二维矩阵,uv(:,1)代表上面提到的t
U,uv(:,2)表示t V
%gm是一个二维矩阵,gm(j,:)代表在校正图空间上与uv(j,:)一一应的点
%og 代表对称中心,它是一个二维向量
a=imread(pic);
b=double(a);
n=size(gm(:,1));
for k=1:n%转换到以对称点为原点的空间关系并构造矩阵A
A(k,:)=[1,gm(k,1)-og(1),gm(k,2)-og(2),gm(k,1)-og(1)^2, (gm(k,1)-og(1))*(gm(k,2)-og(2)),(gm(k,2)-og(2))^2];
end
[h,w]=size(b(:,:,1));
sp=zeros(h,w,3)+255;
a0=pinv(A)* uv(:,2); %计算上面提到的地址映射的系数估计a
b0=pinv(A)* uv(:,1); %计算上面中提到的地址映射的系数估计b
for i=1:h %从理想图像矩阵出发处理
for j=1:w
x=[1,j-og(1),i-og(2),(j-og(1))^2,(i-og(2))*(j-og(1)),(i-og(2))^2]; u=x*a0+og(2); % 逆向映射(j,i)到畸变图像矩阵(v,u)
v=x*b0+og(1);
if (u>1)&&(u<w)&&(v>1)&&(v<h) %处理在图像大小范围内的像素点
uu=floor(u); %对u取整
vv=floor(v); %对v取整
arf=u-uu; %计算上面提到的α
bta=v-vv; %计算上面提到的β
for k=1:3 %进行灰度双线性插值
ft1=(1-bta)*b(vv,uu,k)+bta*b(vv+1,uu,k);
ft2=(1-bta)*b(vv,uu+1,k)+bta*b(vv+1,uu+1,k);
sp(i,j,k)=(1-arf)*ft1+arf*ft2;
end
end
end
end
image(uint8(sp)); %显示校正图像
8.图像几何畸变校正实例
下面是一幅已经发生严重几何变形的图片,根据上面描述的算法,对该图片进行几何畸变校正。

图8 畸变图
这里选择网状图是因为网状图更容易分析,校正效果也更容易观察。

观察畸变图,发现从上数下第五条横线和从左数起第六条竖线都是直线,因此选用这两条直线的交叉点作为对称中心进行畸变校正。

然后,从畸变图中选出4个线性不相关的点,并估计它们在校正图上的对应点。

因此得到的三个输入参数的值分别如下:
pic=’tt.jpg’;
uv=[144,26;26,198;144,416;308,241;19,29;303,30;307,325];
gm=[144,29;29,198;144,412;304,241;15,26;306,26;307,327];
og=[145,241];
gmodify(pic,uv,gm,og);
得到的校正图如下:
图 9 校正后的图片
虽然经过校正得到的图像仍有一定程度的畸变,但是畸变程度小多了。

对几何畸变图像的校正计算, 不可能完全准确的恢复原来的图像。

这是因为影响畸变校正精度的因素是多方面的。

其中对校正算法精度影响较大的几种误差有: 对称中心估算误差、系数估计误差、插值误差和灰度校正误差等。

该校正方法关键在于对称中心的估计和地址映射的系数估计,而系数估计的关键是在于所取对应点对的精确程度。

显然,校正后的图像仍有一定程度的畸变是由于对应点对不够精确。

校正图上的对应点的估计是很困难的,通常都需要对程序运行的结果图进行分析,然后不断进行调整。

六、结论及应用
通过实验我们可以了解到,我们学习了数字图像的基本概念,包括图像的数学化、采样、量化、灰度、各种数学图像的文件格式、表色系、颜色映像等。

再通过具体的实例给学生示范了对于在颜色或形状上发生畸变的图像如何通过数学的方法实现校正的过程。

七、练习
寻找一份自己以前的已经发生颜色或形状畸变的照片,按照上面实验的原理,做出有效的校正,要求写出实验报告。

(本资料素材和资料部分来自网络,仅供参考。

请预览后才下载,期待您的好评与关注!)。

相关文档
最新文档