您的位置:首页 > 其它

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

2017-09-10 09:51 831 查看

算法描述

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

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

如图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


参考文献:
[1]吴剑波,崔振,赵宏,谭玉山. 光刀中心自适应阈值提取法[J]. 半导体光电,2001,(01):62-64. [2017-09-10]. 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法