1701010286
我和数学有约:趣味数学及算法解析 9.4 左眼到右眼的距离究竟多远
1701010287
1701010288
有时候真觉得自己的眼睛看见的总不是那么真实,如海市蜃楼和3D电影等,仿佛一切都触手可及,然而当我们真正去感知时,才发现很多事物本身没那么简单,我们见到的并不是我们想的那样,这一切归因于什么呢?都是我们的眼睛惹的祸。因为我们对自己左右眼的真实距离都无法度量。
1701010289
1701010290
【问题】左眼到右眼的距离究竟有多远?
1701010291
1701010292
【分析】
1701010293
1701010294
左眼到右眼的距离,我们都觉得很简单,直接测测就知道了,然而如果事物真的都能采取如此简化的方法,则人类的航空航天估计注定是失败的。人类在追求成功的同时,更注重对事物的精准度度量。
1701010295
1701010296
两眼最短距离,能不能直接使用两点之间距离最短来度量呢?两眼之间的直线距离,这也是我们常用的距离,然而采用直线距离计算是否合理呢?
1701010297
1701010298
对于一幅图像本身,一幅灰度图像就是二维平面的灰度值集合,本设计中采用左眼点[48,64],右眼点[71,62],进行图像标记,如图9-5所示,左右眼标记程序设计如下:
1701010299
1701010300
%%左眼[48,64],右眼[71,62] figure(‘color’,[1,1,1]) %设置图像背景为白色 imshow(background,[]) %显示图像 hold on %保持句柄 plot(48,64,‘r.’,‘Markersize’,20) %画图 plot(71,62,‘r.’,‘Markersize’,20) %画图
1701010301
1701010302
1701010303
1701010304
1701010305
图9-5 二维图像左右眼标记
1701010306
1701010307
反应到3D曲面上,进行左右眼标记,采用左眼点[20,16,105],右眼点[13,16,72],进行三维曲面标记,MATLAB程序如下:
1701010308
1701010309
%%surf,左眼[20,16,105],右眼[13,16,72] figure(‘color’,[1,1,1]) %设置图像背景为白色 mesh(background(1
:4:end,1:4:end)) %绘制曲面图 zlim([0 256]); %z设置 hold on %保持句柄 plot3(20,16,105,‘r.’,‘Markersize’,50) %画图 plot3(13,16,72,‘g.’,‘Markersize’,50) set(gca,‘Xdir’,‘reverse’); %设置x轴反向 set(gca,‘Ydir’,‘reverse’); %设置y轴反向 box on;grid off %显示图形盒子边框,消除网格化
1701010310
1701010311
运行程序输出图形如图9-6所示。
1701010312
1701010313
1701010314
1701010315
1701010316
图9-6 3D曲面左右眼标记
1701010317
1701010318
如图9-5和图9-6所示的图像中两眼位置,计算两眼之间的距离,那么两眼之间的距离究竟有多远?
1701010319
1701010320
采用两点之间直线距离最短,进行两眼距离计算,MATLAB编程如下:
1701010321
1701010322
figure(‘color’,[1,1,1]) %设置图像背景为白色 imshow(background,[]) %显示图像 hold on %保持句柄 plot(48,64,‘r.’,‘Markersize’,20) %画图 plot(71,62,‘r.’,‘Markersize’,20) plot([48,71],[64,62],‘b-‘,‘linewidth’,3’) dmin = sqrt((48-71)^2+(64-62)^2); %距离计算 disp([‘左右眼的最短路径为:’, num2str(dmin)]) %显示距离计算值
1701010323
1701010324
运行程序结果如下:
1701010325
1701010326
左右眼的最短路径为:23.0868
1701010327
1701010328
输出图形如图9-7所示。
1701010329
1701010330
1701010331
1701010332
1701010333
图9-7 图像平面距离
1701010334
[
上一页 ]
[ :1.701010285e+09 ]
[
下一页 ]