“十字线”交叉点定位法求相交线焦点位置 本文关键词:交叉点,相交,定位,位置,焦点
“十字线”交叉点定位法求相交线焦点位置 本文简介:2014南京理工大学大学生数学建模竞赛承诺书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.我们完全明白,在竞赛开始后参赛队员不能以任何方式
我们得到的图像素材真实可靠;
我们得到的是以单个像素为基本单位的位图;
单像素不考虑RGB值,只有灰度值,灰度值取值从0到255闭区间内的整数;
亚像素情况下认为图像只有线条宽度上的改变,各像素点灰度值取值依然从0到255闭区间内的整数;
实际捕捉到的图像的对焦模糊看作是高斯模糊;
高斯模糊的模糊半径远小于图像的长或宽,模糊权重按照距离被操作像素点的远近而正态分布。
三、
模型符号说明
f(x):横向曲线拟合函数
g(x):纵向曲线拟合函数
A:f(x)和g(x)的交点
B:分析图上的交点
d:交点坐标绝对误差
P:原像素灰度值矩阵
P
:模糊处理后的像素灰度值矩阵
G:高斯模糊映射
G-1:高斯模糊逆映射
r:模糊范围
w:权重矩阵,是一个(2r+1)*(2r+1)矩阵,且矩阵所有元素非负,其和为1
D:线性方程系数矩阵
四、
模型建立与求解
4.1问题一
4.1.1问题分析
问题一是有关在单像素线条情况下的交点坐标求解问题。
实际情形中,我们“十字线”交叉点定位法求相交线焦点位置时会遇到图像中的线条出现倾斜、弯曲等变形的情况,我们需要在各种变形情况中找到交点的准确坐标。
考虑到一般情况是弯曲变形,其他各种情形都可以看做是弯曲变形的特例,我们在这里着重考虑弯曲变形情形下的交点坐标求解问题。
我们通过建立相应的平面直角坐标系,使用多项式函数对曲线进行函数模拟,再将两个函数联立找出近似数值解的坐标即为交点坐标。
4.1.2模型建立与求解
以原题中的素材为例,如下图所示:
图一:素材全图
我们以图一中右上角的交点为例,试图找出其交点的具体坐标值。
首先我们以一个像素为最小单位,取于左上角水平方向距离475个像素,铅直方向距离200像素的点为原点,水平向右为x轴正向,铅直向上为y轴正向,建立整个图片的直角坐标系。
如图二所示:
图二:素材图建立平面直角坐标系
由于曲线清晰,我们认为构成此曲线的点中,每一个点只占一个像素。
从原点起每隔25个像素取曲线上一点,分别在横竖两条曲线上取二十个参考点,得到以下坐标数据:
表一:f
可见使用函数拟合的方式可以在较高的置信度下得到相对精确的结果。
而其他各种情形都可以看做是弯曲变形的特例,均可用函数拟合的方法求得交点处的坐标值。
4.2问题二
4.2.1问题分析
经查阅相关资料我们知道,亚像素的形成原因相对比较复杂,若单独处理其图形则十分麻烦,于是我们可以考虑其和问题一只是像素取值上面的区别。
在亚像素条件下的图形我们认为只有线条宽度上的改变,其他条件与问题一的条件无异。
这里我们不妨假设线条宽度由问题一的一个像素增加到了三个像素,考虑到一般情况是弯曲变形,其他各种情形都可以看做是弯曲变形的特例,我们在这里着重考虑弯曲变形情形下的交点坐标求解问题。
此时我们选取亚像素线条中间的点作为参考点,于是本问题即回到问题一。
通过建立相应的平面直角坐标系,使用多项式函数对曲线进行函数模拟,再将两个函数联立找出近似数值解的坐标即为交点坐标。
4.2.2模型建立与求解
同问题一,我们选取原题所提供的素材四曲线图中右上角的交点为例,建立相应的平面直角坐标系,如下图所示:
图七:亚像素素材图建立平面直角坐标系
类似的,我们在亚像素图形的中心选择参考点,该问题即退化为问题一。
模仿问题一,我们通过相应的函数模拟得到拟合图像,再求得拟合函数交点坐标,即为实际交点坐标。
当线条宽度由问题一的一个像素增加到了三个像素时,亚像素素材图右上角的交点坐标为(1.374,1.891)。
4.3问题三
4.3.1问题分析
由于噪声、图像设备缺陷、光线影响等很多因素导致实际图像存在模糊,导致最终成像上的像素点有了灰度值上的差异。
一般情况下我们认为像素点的灰度值取值介于从0到255闭区间内的整数,灰度值为零表示全白,灰度值为255表示全黑。
由于最终成像上的图形总是呈现出其几何中心的像素灰度值最大,四周像素灰度值逐渐减小,故我们认为最终成像接近于经过高斯模糊的图片。
本题的解答着重于寻找高斯模糊算法的逆,通过对图像进行模糊算法的逆运算来恢复到亚像素级别的情形,进而退化到问题一从而得以解决问题。
4.3.2模型建立与求解
由于我们得到的是以单个像素为基本单位的位图,且单像素不考虑RGB值,只有灰度值,灰度值取值从0到255闭区间内的整数。
故我们可以将一张分辨率为a*b的图像等价于一个a*b的像素灰度值矩阵P,矩阵内的每个元的值是图像相应位置像素的灰度值。
我们定义一个关于矩阵P的映射G,G的作用是在给定模糊范围r和(2r+1)*(2r+1)权重矩阵w的情况下将原矩阵P映射为模糊矩阵,即有:
G(P,r,w)=P
在问题三中,我们已知经模糊处理后的像素灰度值矩阵P
,选取适当的r和w之后,
此时若取r=5,w取均值为0方差为1的正态分布作为权重分布,经过模糊逆处理及黑白化处理之后的图像如下图所示:
图十:处理后的分析图
再将边缘平滑化,图像即可以被退化到亚像素级别情况(问题二),如下图所示:
图十一:退化为亚像素级别焦点问题的分析图
自此,素材中采集自实际照片的焦点问题已经退化至问题二。
经过相关计算可知:若以距离分析图左边缘像素数为横坐标,距离分析图下边缘像素数为纵坐标,可以求得这里的交点坐标为B(80.0,64.7)。
五、
模型思考与改进
5.1多项式插值的震荡现象
在解决问题一和问题二的过程中,我们在函数模拟时为了避免在多项式次数过高导致的产生振荡现象,影响精度,没有采用直接插值模拟函数图像,而是选择大量参考点并使用低次方程进行拟合以提高精度,防止出现较大的震荡。
5.2高斯模糊图像的复原处理
对于图像处理,本题中主要涉及的是消除图像的模糊。事实上我们还可以消除图像中出现的噪声。通过将图像中不平整的像素点用其周边像素点的平均效果替代可以实现一定程度的降噪效果。
综合使用去模糊和降噪两种方法会使得本问题的解决更加精确。
六、
参考文献
吴宪君;
高斯模糊算法的改进及图像处理应用[D],广东,广东石油化工学院,2013,129-131
咸兆勇;
图像模糊检测与模糊区域分割研究[D],广西,广西大学,2013
赵静,但琦主编,严尚安,杨秀文副主编,数学建模与数学实验[M],北京:高等教育出版社;
海德堡:施普林格出版社,2000。
张德荣,王新民,高安民,计算方法与算法语言[M],北京:高等教育出版社,1981。
易大义,陈道琦,数值分析引论[M],杭州:浙江大学出版社,1998。
七、
附录
此代码均在matlab下运行。
%
拟合曲线f(x)
x=[
fliplr(-10:-10:-250)
10:10:180
];
x=x
;
y=[
48
46
44
42
39
37
33
30
26
23
19
16
12
9
5
2
1
-1
-3
-2
-4
-2
-2
-3
-1
3
5
7
10
13
16
20
24
27
31
35
39
44
49
53
58
62
67
];
y=y
;
f1=fittype(
a5*x^5+a4*x^4+a3*x^3+a2*x^2+a1*x+a0,independent,x,coefficients,{
a5,a4,a3,a2,a1,a0
});
f=fit(x,y,f1)
%显示拟合曲线f(x)
x1=[
fliplr(-10:-10:-250)
10:10:180
];
y1=f(x1);
plot(x1,y1,x,y,r*
)
%得到拟合曲线f(x)与原始数据的对照图
%
拟合曲线g1(x)
m=[-56
-60
-64
-66
-68
-70
-71];
m=m
;
n=[
-200
-190
-180
-170
-160
-150
-140];
n=n
;
q1=fittype(
b5*x^5+b4*x^4+b3*x^3+b2*x^2+b1*x+b0,independent,x,coefficients,{
b5,b4,b3,b2,b1,b0
});
g1=fit(m,n,q1)
%显示拟合曲线g1(x)
m1=[-56
-60
-64
-66
-68
-70
-71];
n1=g1(m1);
plot(m1,n1,m,n,r*
)
%得到拟合曲线g1(x)与原始数据的对照图
%
拟合曲线g2(x)
z=[
-71
-70
-69
-67
-63
-59
-55
-50
-44
-37
-30
-23
-15
-7
8
15
21
26
32
36
40
42
43];
z=z
;
t=[
-140
-130
-120
-110
-100
-90
-80
-70
-60
-50
-40
-30
-20
-10
10
20
30
40
50
60
70
80
90];
t=t
;
q2=fittype(
c5*x^5+c4*x^4+c3*x^3+c2*x^2+c1*x+c0,independent,x,coefficients,{
c5,c4,c3,c2,c1,c0
});
g2=fit(z,t,q2)
%显示拟合曲线g2(x)
z1=[
-71
-70
-69
-67
-63
-59
-55
-50
-44
-37
-30
-23
-15
-7
8
15
21
26
32
36
40
42
43];
t1=g2(z1);
plot(z1,t1,z,t,r*
)
%得到拟合曲线g2(x)与原始数据的对照图
%求出交点坐标。
%建立M文件F.m,源代码见附件F.m。
%
调用fzero函数求根。
h=fzero(
F,0)
%求f(x)=g2(x)在(0,0)附近的根。
d=f(h);
D=[h,d]
%显示交点坐标。
%求拟合后原始数据和曲线的整体比较图。
plot(x,y,x1,y1,r*,m,n,m1,n1,r*,z,t,z1,t1,r*
)
标签:十字线