利用自适应阈值法提取线结构光中心

算法描述

在基于三角法的线结构光测量系统中,如何准确的提取线结构光的中心是能否测量准确的关键问题。

自适应阈值法又叫变域值重心法,它的阈值是随着每一行光强最大值不同而变化的。

如图1所示,首先在采集到的光刀图像上找到本行灰度最大值(假设灰度最大值为 gmax),根据本行光强最大值来确定一个阈值T(其中T为经验值,一般取10~20),然后将阈值与本行的每一个像素点灰度值进行比较,判断出大于阈值的T的像素,利用重心公式(1)计算得到本行光刀中心位置。

 

图1 变阈值重心法示意图

公式(1)中,gi 为所有大于阈值T的像素的灰度值,ui 为所有大于阈值T的像素坐标,M为大于阈值T的像素的个数,u为计算求得的光心位置。

(1)

变阈值重心法充分利用了光强极值点附近所有的像素,减少了因为光强分布不均而导致的光刀中心找不准的问题。

 

MATLAB代码示例

 

clear; 
close all;
clc;
tic;
%\\----------------------------------读取图片数据-----------------------------------\\
files = dir('E:\capture picture\*.tiff');%获取文件数量
filelength = length(files);
a = cell(1,filelength);
a1 = cell(1,filelength);
a2 = cell(1,filelength);
for n0 = 1:filelength
     a(n0) = {imread(strcat('E:\capture picture\',num2str(n0),'.tiff'))};%读取图像
end
%\\----------------------------------------------------------------------------------\\

%\\----------------------------------彩色图转换为灰度图--------------------------------\\
for n0 =1:filelength
    a{1,n0} = rgb2gray(a{1,n0});
end  
%\\----------------------------------------------------------------------------------\\  

%\\--------------------------------滤波----------------------------------\\
sigma =1.6;%高斯低通滤波
gausFilter = fspecial('gaussian',[5 5],sigma);
for n0 = 1:filelength
    a{n0}=imfilter(a{n0},gausFilter,'replicate');
end
%\\--------------------------------------------------------------------------\\
 %\\--------------------------光刀中心线提取-----------------------------\\
[m,n]=size(a{1,1});
zuida = zeros(filelength,m);
num = zeros(filelength,m);
sum0 = zeros(filelength,m);
sum1 = zeros(filelength,m);
position1 = zeros(filelength,m);
T = 10;%阈值
for n2= 1:filelength 
    for i1 = 1:m
        zuida(n2,i1) = max(a{1,n2}(i1,:));  %找到本行最大值
        zuida(n2,i1) = zuida(n2,i1)-T;   
        num(n2,i1) = 0;  
        sum0(n2,i1) = 0;
        sum1(n2,i1) = 0;
        for j1 = 1:n
            if a{1,n2}(i1,j1)>zuida(n2,i1)
                num(n2,i1) = num(n2,i1)+1;
                sum0(n2,i1) = sum0(n2,i1)+j1*double(a{1,n2}(i1,j1));
                sum1(n2,i1) = sum1(n2,i1)+double(a{1,n2}(i1,j1));
            end
        end
       position1(n2,i1) = sum0(n2,i1)/sum1(n2,i1);
    end
end
figure
mesh(position1);title('光刀中心线提取')
%\\--------------------------------------------------------------------------\\
toc

(将变阈值中心法提取线结构光中心的算法写成了一个function,有需要的自取)

https://download.csdn.net/download/di_wong/10582385

 

参考文献:

[1]吴剑波,崔振,赵宏,谭玉山. 光刀中心自适应阈值提取法[J]. 半导体光电,2001,(01):62-64. [2017-09-10]. 
 

  • 5
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值