利用模板法的光条中心提取

本文介绍了使用模板法来提取线结构光条纹中心的算法。通过设计四种不同方向的9x9模板,匹配条纹的四种基本模式,并进行相关运算,找出与图像最相关的模板,从而确定点的法线。在找到法线后,通过灰度重心法确定光条纹的中心。程序实例进一步展示了这一过程。
摘要由CSDN通过智能技术生成

算法描述

线结构光的条纹形状随着物体表面的变化而不同,在比较小的范围内,可 以认为线结构光条纹只有四种模式,水平,垂直,左倾45°,右倾45°。为了能够准确地描述线结构光条纹的形状,在模块选取时一般根据光带的粗细程度进行选取,因为太大不能准确的反映出条纹的细节,太小又不能反映出光带的走向,因此选取了一个9x9的模块来与之相匹配对应这四种模式。设计了四种方
向的模板,将模板记为T,模板内的元素为0和l,建立的四个模扳为
这四个模板沿着细化后的图像中的细线移动, 依次以每个点为中心与图像做相关运算
c(u,v)为图像中细化曲线上的点,对每一个点可以求得四个不同的相关值, 这个值反映了这个点处的图像与模板的相关程度。其值越大,相关程度越高,
所以当H的相关度最高时,可以认为该点附近的图像的斜率最接近于第k个模板 的方向,因此就可以近似地求出该点的法线。求出了法线以后,沿着法线方向,
以这个点为中心,两边各取6个点,然后利用灰度重心法求出该处的线结构光 ’
图像的中心。

程序实例

clear;
clc
I = imread('IMG1_1.bmp');
if ndims(I) == 3
    I = rgb2gray(I);
end
thresh =20;
[r,c] = size(I);
for i = 1:r
    for j = 1:c
        if I(i,j) < thresh
            I(i,j) = 0;
        end
    end
end
%创建预定义滤波算子
gaussFilter =  fspecial('gaussian',[7 7],5);
%对图像进行滤波,‘replicate’表示图像大小通过复制外边界的值来扩展
I = imfilter(I,gaussFilter,'replicate');
%灰度拉伸,增强图像对比
I = im2uint8( mat2gray( log(1 + double(I)) ) ); 
imshow(I);
I = double(I)/255;
%二值化图像
thresh = graythresh(I);
I1=im2bw(I,thresh);
imshow(I1);
%膨胀处理
I1=bwmorph(I1,'dilate',10);
imshow(I1);
%腐蚀
se = strel('disk',6);
I1=imclose(I1,se);
I1 = bwmorph(I1,'thin',Inf);
% bwl=bwmorph(I,'skel',Inf);
% figure;
imshow(I1);
% [r,c]=size(I1);
% T1=[0 0 0 0 1 0 0 0 0;
%     0 0 0 0 1 0 0 0 0;
%     0 0 0 0 1 0 0 0 0;
%     0 0 0 0 1 0 0 0 0;
%     0 0 0 0 1 0 0 0 0;
%     0 0 0 0 1 0 0 0 0;
%     0 0 0 0 1 0 0 0 0;
%     0 0 0 0 1 0 0 0 0;
%     0 0 0 0 1 0 0 0 0
%     ];
% 
% T2=[0 0 0 0 0 0 0 0 0;
%     0 0 0 0 0 0 0 0 0;
%     0 0 0 0 0 0 0 0 0;
%     0 0 0 0 0 0 0 0 0;
%     1 1 1 1 1 1 1 1 1;
%     0 0 0 0 0 0 0 0 0;
%     0 0 0 0 0 0 0 0 0;
%     0 0 0 0 0 0 0 0 0;
%     0 0 0 0 0 0 0 0 0
%     ];
% 
% T3=[1 0 0 0 0 0 0 0 0;
%     0 1 0 0 0 0 0 0 0;
%     0 0 1 0 0 0 0 0 0;
%     0 0 0 1 0 0 0 0 0;
%     0 0 0 0 1 0 0 0 0;
%     0 0 0 0 0 1 0 0 0;
%     0 0 0 0 0 0 1 0 0;
%     0 0 0 0 0 0 0 1 0;
%     0 0 0 0 0 0 0 0 1
%     ];
% T4=[0 0 0 0 0 0 0 0 1;
%     0 0 0 0 0 0 0 1 0;
%     0 0 0 0 0 0 1 0 0;
%     0 0 0 0 0 1 0 0 0;
%     0 0 0 0 1 0 0 0 0;
%     0 0 0 1 0 0 0 0 0;
%     0 0 1 0 0 0 0 0 0;
%     0 1 0 0 0 0 0 0 0;
%     1 0 0 0 0 0 0 0 0
%     ];

T1=[0 0 0 0 0 0 1 0 0 0 0 0 0;
    0 0 0 0 0 0 1 0 0 0 0 0 0;
    0 0 0 0 0 0 1 0 0 0 0 0 0;
    0 0 0 0 0 0 1 0 0 0 0 0 0;
    0 0 0 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值