利用自适应阈值法提取线结构光中心
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].
相关文章推荐
- 利用Halcon提取出器件的中心部分
- 利用PL/SQL导出Oracle数据表结构
- 图像主结构的提取方法
- 数据结构5:利用栈实现二进制到十进制的转换
- 利用ROS工具从bag文件中提取图片
- 利用sfntly的sfnttool.jar提取中文字体
- python3 下分支循环结构利用的小示例
- Windows下利用Python3绘制Caffe中的网络结构
- 利用java提取Excel中日平均温度计算及导出
- 利用notepad++提取邮件地址的方法
- 文档视图结构中利用序列化机制使用OLE剪贴板
- mysql 利用mysqldump 导入导出表结构、数据、存储过程及函数
- 利用SURF特征检测和FLANN最近邻算法实现图像的目标提取
- ssm 自定义注解实现mybatis自动维护表结构以及利用freemarker生成代码
- 利用Map把一维数据转换成树结构
- Uri详解之——Uri结构与代码提取
- oracle利用正则表达式提取字符串中的数字
- 利用arcpy和GP构建批量提取字段名的工具
- HDU 4417 超级马里奥 数据结构+利用树状数组进行快速统计+多维统计转换
- 利用正则提取http://www.webhost86.cn