检测光纤的同心性

这是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);
时间: 2024-09-18 11:20:05

检测光纤的同心性的相关文章

光纤的部署与测试的注意事项

一方面企业对于网络的性能要求越来越高,另一方面光纤的成本也越来越底.故通过光纤来实现高带宽(如在两幢办公楼之间通过光纤来连接,以前直接是通过网线连接)现在已经越来越普遍.光纤对于企业来说,可能已经不是奢侈品,而是必需品. 虽然光钎可以提供很大的带宽,但是如果部署不当的话,其性能会打折扣.为此,对于有光钎需求的企业,笔者有如下建议. 一.要尽量避免宏曲与微曲 光钎跟普通的网线一样,也会有信号衰退的情况.网线主要是因为距离的原因导致信号的衰退,而对于光纤来说,则主要是不恰当的安装所造成的.如光纤如果

7项最佳实践助您利用媒体转换不断发展数据中心网络

任何数据中心网络的基础都是物理层;是光纤和铜缆将用户.服务器.存储以及当前物联网时代的各种设备连接起来的.而在这些网络上不断增涨的需求,需要数据中心不断进行升级.本文中,我们将为广大读者诸君介绍7项最佳实践方案,以便为您提供当您所在的数据中心正在增加或扩大媒体转换系统时,除了速度和进给量之外,还可以考虑的其他关键因素一瞥. 任何数据中心网络的基础都是物理层;是光纤和铜缆将用户.服务器.存储以及当前物联网时代的各种设备连接起来的.而在这些网络上不断增涨的需求,需要数据中心不断进行升级他们的网络规模

光纤故障如何快速判断原因

1. Power灯不亮 电源故障 2. Link灯不亮 故障可能有如下情况: a) 检查光纤线路是否断路 b)检查光纤线路是否损耗过大,超过设备接收范围 c)检查光纤接口是否连接正确,本地deTX 与 远方的RX 连接,远方的TX 与本地的RX连接. d) 检查光纤连接器是否完好插入设备接口,跳线类型是否与设备接口匹配,设备类型是否与光纤匹配,设备传输长度是否与距离匹配. 3.电路Link灯不亮 故障可能有如下情况: a)检查网线是否断路 b)检查连接类型是否匹配:网卡与路由器等设备使用交叉线,

布线综合比较:气吹光纤与传统光纤

绝大多数综合市线系统是采用传统的光纤系统进行安装的:这种情况下,需利用已经讨论的设计方法进行合适的光纤安装. 该系统经过无数成功案例证明可行:可靠:稳定:成熟及优异. 近期另一种称作"气吹光纤"的安装技术,其实是在许多年以前的80年代末就已开发出来成品了.气吹光纤系统的原理是在将要或可能走光纤的位置之间安装一组管道,也叫做"做导管"或"微管道".当需要在网络的两点之间铺设光纤时,通过专用的安装器则把光纤"吹"入管道,然后再用接头连接光纤. 传统光

吹光纤与传统光纤布线综合比较

绝大多数综合市线系统是采用传统的光纤系统进行安装的:这种情况下,需利用已经讨论的设计方法进行合适的光纤安装.该系统经过无数成功案例证明可行:可靠:稳定:成熟及优异. 近期另一种称作"气吹光纤"的安装技术,其实是在许多年以前的80年代末就已开发出来成品了.气吹光纤系统的原理是在将要或可能走光纤的位置之间安装一组管道,也叫做"做导管"或"微管道".当需要在网络的两点之间铺设光纤时,通过专用的安装器则把光纤"吹"入管道,然后再用接头连接光纤. 传统光纤

常见的光纤故障及其解决方案

任何做过网络排障的专业人士都清楚这是一个复杂的过程.这里给出了一些最常见的光纤故障以及产生这些故障的可能因素,这些信息将有助于用户对网络故障进行有根据的猜测. 光纤断裂通常是由于外力物理挤压或过度弯折; 传输功率不足; 光纤铺设距离过长可能造成信号丢失; 连接器受损可能造成信号丢失; 光纤接头和连接器(connectors)故障可能造成信号丢失; 使用过多的光纤接头和连接器可能造成信号丢失; 光纤配线盘(patchpanel)或熔接盘(splicetra)连接处故障. 通常而言,如果连接完全不通

光纤是什么 光纤有什么用

微细的光纤封装在塑料护套中,使得它能够弯曲而不至于断裂.通常,光纤的一端的发射装置使用发光二极管(light emitting diode,LED)或一束激光将光脉冲传送至光纤,光纤的另一端的接收装置使用光敏元件检测脉冲. 在日常生活中,由于光在光导纤维的传导损耗比电在电线传导的损耗低得多,光纤被用作长距离的信息传递. 通常光纤与光缆两个名词会被混淆.多数光纤在使用前必须由几层保护结构包覆,包覆后的缆线即被称为光缆.光纤外层的保护结构可防止周围环境对光 纤的伤害,如水,火,电击等.光缆分为:光纤

数据中心网络里的链路检测技术漫谈

2017年1月14日,Ucloud云北京B区的业务发生了中断,中断的原因是运营商施工原因导致B区数据中心机房到北京核心汇聚点的两对光纤同时被挖断,导致业务中断.这让人想起了2015年5月的支付宝业务中断事件,也是运营商网络光纤被施工挖断导致,当时是四条大对数光缆中断.互连的光纤链路出现中断这类突发事件,如果没有一些备份和监控措施,就会导致业务受到影响.实际上,在数据中心内外部,类似于这样的链路故障问题时有发生,只不过这两个例子是影响比较大的.那么,数据中心怎么才能提前做好链路检测工作,避免发生类

博科第六代光纤交换机大起底

在当前的存储世界,第五代光纤通道交换机能够最大程度提高全闪存中的系统性能.可扩展性.可管理性和可用性.这种高带宽能力.应用程序快速响应,以及卓越的可靠性,为关键行业的核心应用提供了上佳的体验. 可能很多行业还没有全面挖掘第五代交换机的性能或特性,博科却在日前又发布了其第六代光纤交换机,将交换机的性能推向新的极致.赛迪网记者日前采访了博科公司中国区技术经理李华祥,对其新发布的博科G620第六代光纤交换机有了一个更为直观的感受. 李华祥表示,新产品的推出是技术堆叠的自然结果,G620的性能确实领先行