检测光纤的同心性

简介: 这是matlab自带的一个例程。问题描述:光纤横截面包括core和cladding两部分,也就是“中心圆”和“漆包线”希望两者是同心圆,或者说,希望两者圆心差的不要太离谱原理:先将图像转换为二值图像,得到只有漆包线(圆环)是黑色、其他都是白色的图像根据漆包线区域计算出图像重心根据重心得到cladding边界上一个点,进而得到整个边界上的点集由边界点击得到圆心。

这是matlab自带的一个例程。

问题描述:光纤横截面包括core和cladding两部分,也就是“中心圆”和“漆包线”
希望两者是同心圆,或者说,希望两者圆心差的不要太离谱
原理:先将图像转换为二值图像,得到只有漆包线(圆环)是黑色、其他都是白色的图像
根据漆包线区域计算出图像重心
根据重心得到cladding边界上一个点,进而得到整个边界上的点集
由边界点击得到圆心。使用了最小二乘法来拟合圆形(算法有点复杂。。没看过)
计算圆心和重心之间的偏差,若小于阈值则认为光纤合格

%初始化
NumPts = 250; %边界像素点的最大数目
tolerance = 1; %容忍距离
NumTimes = 8;

%创建一个视频读写系统对象,读取视频文件
hmfr = vision.VideoFileReader('vipconcentricity.avi', 'PlayCount', NumTimes);
%转换RGB到灰度空间。为什么要创建一个转换对象?直接转不好吗?
hcsc = vision.ColorSpaceConverter('Conversion', 'RGB to intensity');

%创建一个光斑分析(BlobAnalysis)系统对象,用来寻找视频中圆形光斑的重心
hblob = vision.BlobAnalysis('AreaOutputPort', false,...
    'BoundingBoxOutputPort', false,...
    'OutputDataType', 'single',...
    'MaximumCount', 1);

%创建一个边界跟踪系统对象,用来寻找包层的中心
%BoundaryTracer函数是在二值图像上找到object的边界,也就是非零的边界点集合
%目测是用dfs来实现的
htracebound = vision.BoundaryTracer(...
    'MaximumPixelCount', NumPts,...
    'NoBoundaryAction', 'Fill with last point found');

%创建两个视频播放对象,用来显示视频的输入和输出
hVideo1 = vision.VideoPlayer('Name', 'Original');
hVideo_gray = vision.VideoPlayer('Name', 'Gray');
hVideo_binary = vision.VideoPlayer('Name', 'Binary');
hVideo2 = vision.VideoPlayer('Name', 'Results');
hVideo2.Position(1) = hVideo1.Position(1) + 450;

%处理视频流
count = 1;
while(count<NumTimes)
    if isDone(hmfr)
        count = count + 1;
    end
    I = step(hmfr);
    image = step(hcsc, I); %转化图片为灰度图
    step(hVideo_gray, image);
    
    BW = image < 0.5; %转化图片为二值图
    step(hVideo_binary, BW);
    centroid = step(hblob, BW); %计算光斑重心
    
    Idx = floor(centroid(1)); %重心x坐标
    max_idx = find(BW(:,Idx), 1); %重心x坐标所在的列中,第一个非零元素的索引.
    %因为图片已经是二值化的,(而且是理想图片),所以第一个非零元素一定是cladding外围圆周上、垂直过圆心的上侧的点
    
    StartPts = [Idx, single(max_idx)]; %计算起始点,也就是cladding外围圆周上垂直过圆心的上侧的点
    
    %寻找外部包层的边界像素
    Pts = step(htracebound, BW, StartPts);
    
    %以下是难点部分:根据边界点,用最小二乘法拟合圆形,得到圆心和半径
    %原理见Paper:http://www.emis.de/journals/BBMS/Bulletin/sup962/gander.pdf
    Row_bound = Pts(:, 1);
    Col_bound = Pts(:, 2);
    t = [Row_bound Col_bound ones(size(Pts, 1), 1)];
    
    X = pinv(t);
    X1 = Row_bound.^2 + Col_bound.^2;
    x2 = X*(-X1);
    
    radius = sqrt((-0.5*x2(1)).^2 + (-0.5*x2(2)).^2 - x2(3));
    center = [(-0.5*x2(1)), (-0.5*x2(2))];
    %拟合计算完毕,得到了圆心和半径。下面,用圆心和重心比较
    %如果两者之间误差在允许范围内,则光纤是可以接受的(合格)

    dist = sqrt(sum(centroid - center).^2);
    disp(dist)

    % 绘制圆形,并标注出圆心和重心
    y1 = insertMarker(I, centroid, '+', 'Color', 'red');
    y2 = insertShape(y1, 'Circle', [center, radius],'Color', 'cyan');
    y3 = insertMarker(y2, center, '*', 'Color', 'green');

    % 插入文本
    qualitySet =  {'Bad', 'Good'};
    textIdx = (dist <= tolerance) + 1;
    textQuality = ['Concentricity: ' qualitySet{textIdx}];
    textDist = sprintf('Distance in pixels: %d', uint8(dist));
    textAll = sprintf([textQuality '\n' textDist]);
    image_out = insertText(y3, [1 1], textAll, 'FontSize', 14);
    % 显示结果
    step(hVideo2, image_out);
    step(hVideo1, I);
end

release(hmfr);
目录
相关文章
|
15天前
|
数据中心
|
4月前
|
数据采集 传感器 存储
LabVIEW航空用电缆检测
LabVIEW航空用电缆检测
26 0
|
传感器 数据采集 安全
无线无源中继采发仪在工程监测中的应用
随着科技的不断发展,无线传感技术在工程监测中的应用越来越广泛。其中,无线无源中继采发仪是一种新型的数据采集设备,能够将传感器数据通过无线信号传输到数据中心。本文旨在探讨无线无源中继采发仪在工程监测中的应用。
无线无源中继采发仪在工程监测中的应用
|
传感器 存储 物联网
工程监测多通道无线采发仪的特点
NLM6xx 是一台低功耗的多通道无线采发仪, 内置电池可独立工作数年。得益于我公司的传感测量、无线通讯、功耗控制等技术累积,设备平均功耗低至微安级别。
工程监测多通道无线采发仪的特点
【Matlab代码实现】电动过滤器:LPF和HPF、模拟调制:调幅和调频、WiFi、蓝牙和蜂窝网络的容量分析.....
【Matlab代码实现】电动过滤器:LPF和HPF、模拟调制:调幅和调频、WiFi、蓝牙和蜂窝网络的容量分析.....
133 0
|
传感器 网络协议 数据中心
VS208~VS432多通道振弦传感器无线采发仪远程修改参数方式
无线采集仪支持远程无线修改设备参数功能,可通过短信指令、 FTP 文件、 TCP 在线指令三种途径实现。
VS208~VS432多通道振弦传感器无线采发仪远程修改参数方式
|
传感器 存储
多通道振弦传感器无线采发仪VS-BOX通讯电源接口
VS-Box 是以振弦、温度传感信号为主的多通道无线采发仪,并可扩展其它模拟(电流、电压、电阻)信号和数字信号( RS485、 RS232)传感器通道,内置电池,可外接太阳能电池板。最多可实现 32 通道的全自动采集存储和无线发送,支持内部及外部 U 盘数据存储; 1 路程控电源输出可为其它传感器供电;RS232/RS485 数据接口。
多通道振弦传感器无线采发仪VS-BOX通讯电源接口
|
传感器
VS208~VS432多通道振弦传感器无线采发仪电源连接说明
VS4XX 的工作电源为 12~24V,电源接口有 4 根线,分别为工作电源接口(红黑) 和电池充电接口(绿蓝)。 设备供电方案可以为蓄电池、蓄电池+充电器、市电转直流适配器,下面是不同供电方案时的接线图。
VS208~VS432多通道振弦传感器无线采发仪电源连接说明
|
传感器 移动开发 网络协议
工程监测多通道振弦传感器无线采发仪VS-BOX外接传感器的接入逻辑与数据发送
单类型数字传感器:使用寄存器 DS_SENSOR(282)来设置单类型数字传感器的类型和数量(见下表)。 VS 会自动轮巡发送传感器读取指令,当 VS 接收到传感器输出的数据后解析数据并将其更新到通道寄存器 CHxx 内,最终发送到远程服务器上。
工程监测多通道振弦传感器无线采发仪VS-BOX外接传感器的接入逻辑与数据发送
|
传感器
频率温度传感器多路传感器群控集线器如何扩展200路传感器
SHxxx 是可以将多路传感器轮转切换到单一接口的传感器集线器(最多200 路),从而避免测试现场传感器数量较多时造成的传感器编号混乱问题。适用于2/3/4 线制所有传感器(例如:振弦、NTC 热敏电阻温度、差阻、电压、电流、485数字传感器等)。
频率温度传感器多路传感器群控集线器如何扩展200路传感器