美文网首页
双目方式验证

双目方式验证

作者: Kerwin_H | 来源:发表于2019-10-31 15:52 被阅读0次

%双目方式验证

%clear

%clc

IL1 = imread('a3.bmp');%读取左右图片

IR1 = imread('b3.bmp');

figure

imshowpair(IL1, IR1, 'montage');  %拼接显示两张图片

title('Original Images');

%加载stereoParameters对象。

load('matlab02.mat');%加载你保存的相机标定的mat

[J1, J2] = rectifyStereoImages(IL1, IR1, stereoParams); %双目校准

figure

imshowpair(J1, J2, 'montage');

title('Undistorted Images');

figure; imshow(cat(3, J1(:,:,1), J2(:,:,2:3)), 'InitialMagnification', 50);%图像显示50%

%{

%让两个物体同时显示,利用到(图像融合,边缘提取)

WL1 = abs(imfilter(rgb2gray(J1), fspecial('Laplacian'), 'replicate', 'conv'));

WL2 = abs(imfilter(rgb2gray(J2), fspecial('Laplacian'), 'replicate', 'conv'));

WL1(WL1(:)>=WL2(:)) = 1;WL1(WL1(:)<WL2(:)) = 0;

WL2(WL1(:)>=WL2(:)) = 0;WL2(WL1(:)<WL2(:)) = 1;

J_F(:,:,1) = J1(:,:,1).*WL1+J2(:,:,1).*WL2;

J_F(:,:,2) = J1(:,:,2).*WL1+J2(:,:,2).*WL2;

J_F(:,:,3) = J1(:,:,3).*WL1+J2(:,:,3).*WL2;

figure; imshow(J_F, 'InitialMagnification', 50);%图像显示50%

%}

disparityMap = disparity(rgb2gray(J1), rgb2gray(J2), 'BlockSize',...

15,'DisparityRange',[0,400],'BlockSize',15,'ContrastThreshold',0.5,'UniquenessThreshold',15);

%{

’DisparityRange’,[0,400]:视差范围,范围可以自己设定,不能超过图像的尺寸,当双目距离较远或者物体距离较近时,应适当增大该参数的值。

’BlockSize’, 15:设置匹配时方块大小。

’ContrastThreshold’,0.5:对比度的阈值,阈值越大,错误匹配点越少,能匹配到的点也越少。

’UniquenessThreshold’,15:唯一性阈值,设置值越大,越破坏了像素的唯一性,设置为0,禁用该参数。

’DistanceThreshold’,400:从图像左侧到右侧检测的最大跨度,跨度越小越准确,但很容易造成无法匹配。禁用该参数[]。

’TextureThreshold’,0.0002(默认):最小纹理阈值,定义最小的可靠纹理,越大越造成匹配点少,越少越容易匹配到小纹理,引起误差。

返回的视差值,以图1为底板,以图2与图1的视差为灰度值

整体计算的步骤:

1.使用Sobel滤波器计算图像对比度的度量。

2.通过使用块匹配和绝对差值之和(SAD)来计算每个像素的视差。

3.标记包含不可靠的像素 差异值。该函数将像素设置为 - realmax(’ single’)返回的值。

%}

%显示 disparityMap

figure;imshow(disparityMap, [0, 400]);

title('Disparity Map');

colormap jet

colorbar

%% 从视差图中提取三维信息

%返回的矩阵 pointCloud3D为三维,(:,:,1)x坐标,(:,:,2)y坐标,(:,:,3)z坐标。

%返回的数类型为single,最好转化为double

pointCloud3D = reconstructScene(disparityMap, stereoParams);

pointCloud3D = double(pointCloud3D);

pointCloud3D = pointCloud3D/1000;  %毫米转化为米

Z = double(pointCloud3D(:,:,3));

mask = repmat(Z> 5&Z <6,[1,1,3]);

J1(~mask)= 0;

%这里的50指定了显示的时候放大倍数为50%,也就是缩小一半放大。

%这里显示的是距离5~6米之间的物体,其他范围的物体都变成了黑色

figure;imshow(J1,'InitialMagnification',50);

%% Reconstruct the 3-D Scene形象显示深度信息

pointCloud3D = reconstructScene(disparityMap, stereoParams);

% Convert to meters and create a pointCloud object

pointCloud3D = pointCloud3D ./ 1000;

ptCloud = pointCloud(pointCloud3D, 'Color', J1);

% Create a streaming point cloud viewer

player3D = pcplayer([-3, 3], [-3, 3], [0, 8], 'VerticalAxis', 'y', ...

    'VerticalAxisDir', 'down');

% Visualize the point cloud

view(player3D, ptCloud);

相关文章

  • 双目方式验证

    %双目方式验证 %clear %clc IL1 = imread('a3.bmp');%读取左右图片 IR1 = ...

  • 2018-10-16 EasyUI 验证框

    关于 多个验证框动态绑定验证方式 easyui 电话验证 必填input 的验证

  • 短信验证

    一、短信验证 验证方式有很多种:短信验证码,邮箱验证,语音验证,图片验证等等。其中短信验证,语音验证,邮箱验证都是...

  • 各个搜索引擎站长工具验证注意事项

    一、各个搜索引擎站长工具验证网站的方式有3种: 二、各个验证方式的操作步骤: 1.文件验证: 1.1.下载专有验证...

  • 双目

  • 双目

    烛光摇曳 你的目 如海上明月 如墨的夜尽头 泪浇灭烛火 月坠落

  • 双目

    每个人都有自己的眼睛,都应该明辨是非。当你从别人哪里听到了别人的看法然后相信别人而没有想过自己的看法接着去污蔑另外...

  • IOS 指纹登录详解

    1.指纹验证方式: 只使用指纹验证 LAPolicyDeviceOwnerAuthenticationWithBi...

  • OPENSSL自定义证书验证

    OPENSSL的TLS有两种证书验证方式,本文主要对使用callback的方式进行探讨。 验证方式 指定CA文件:...

  • 图片验证码识别平台的使用方法(新手教程)

    图片验证码识别平台是时下一种流行的全自动验证码识别方式,与传统都验证码识别方式相比,此种方式更为简单,更为...

网友评论

      本文标题:双目方式验证

      本文链接:https://www.haomeiwen.com/subject/anstbctx.html