|
LBP图像算法:视频链接:
视频:http://pan.baidu.com/s/1jHHh7TG
录制的视频是算法底层原理讲解,底层代码实现,方便大家真正掌握算法实质,开发出更加出色的算法。录制视频的初衷是:避免读者朋友利用大把时间学习已有常见算法,本系列视频旨在让读者朋友快速深入了解这些常见算法原理,有更多的时间去研究更加高大上算法(价值)。
具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1
Sindagi等人提出基于Inlier-Outlier比值和改进的LBP的OLED屏类缺陷改进算法,该算法能够较好的检测缺陷,具体看论文,该Inlier-Outlier比值来源于LBP模型。
LBP特征计算:LBP = ∑s(gp - gc)*(2^p), 当x>=0,s(x)=1, 当x<0,s(x)=0;
改进后的特征:
LBP = ∑s(gp - gc),if U<=UT , 当x>=0,s(x)=1, 当x<0,s(x)=0;
LBP = p+1,if U>UT , 当x>=0,s(x)=1, 当x<0,s(x)=0;
一般情况下,p=8即8邻域。
gc 为中心模板点的灰度值,gp为8邻域灰度值。
weight = 1,2,4,8,16,32,64,128.
LBP是对整幅图像进行掩膜mask扫描,mask互不重叠,所有的mask构成整幅图像,s(x)是对mask邻域区域、中心区域进行二值化比较操作;
LBP最后一步是分块求解直方图特征,HoG特征也用到这一点;
具体代码如下:
- clc,clear,close all
- warning off
- im = imread('Logo.jpg');
- if size(im,3)>1
- im = rgb2gray(im);
- end
- im = imresize(im,[100 100],'bicubic'); % 归一化
- imshow(im)
- if ~isfloat(im)
- im = double(im);
- end
- mask = 5;
- % im为灰度图像
- [Height,Width] = size(im);
- imB = zeros(Height+(mask-1), Width+(mask-1)); % 初始化,扩边处理
- imB(3:end-2, 3:end-2) = im;
- % imshow(imB,[])
- alpha = 0.5;
- beta = 1-alpha;
- imD0 = imB(3:end-2, 1:Width) - im; % 列偏移,相减
- imD1 = imB(3:end-2, 5:end) - im; % 列偏移,相减
- imD2 = imB(1:Height, 3:end-2) - im; % 行偏移,相减
- imD3 = imB(5:end, 3:end-2) - im; % 行偏移,相减
- imD4 = alpha*imB(4:end-1, 2:end-3) + beta*imB(5:end, 1:Width) - im;
- imD5 = alpha*imB(4:end-1, 4:end-1) + beta*imB(5:end, 5:end) - im;
- imD6 = alpha*imB(2:end-3, 4:end-1) + beta*imB(1:Height, 5:end) - im;
- imD7 = alpha*imB(2:end-3, 2:end-3) + beta*imB(1:Height, 1:Width) - im;
- weight = 2.^(0:1:7)';
- imD = [imD0(:),imD1(:),imD2(:),imD3(:),imD4(:),imD5(:),imD6(:),imD7(:)];
- imD = imD>=0; % 二值化操作
- imDw = imD*weight; % 二进制转化为十进制
- imLBP = reshape(imDw, [Height,Width]);
- imshow(imLBP,[])
- % mask = 5;
- % alpha = 0.5;
- % imLBP = LBP_Image( im, mask, alpha ); % 图像LBP特征求解
- % imshow(imLBP,[])
- imf = mat2gray(imLBP);
- imk = im2uint8(imf);
- imshow(imk,[])
- stride = 20; % 步长
- imLBPfeatures = [];
- for i=1:stride:size(im,1)-stride
- for j=1:stride:size(im,2)-stride
- imLBPpart = imLBP(i:i+stride-1, j:j+stride-1);
- imLBPfeature = imhist(imLBPpart)/(size(imLBPpart,1) * size(imLBPpart,2));
- imLBPfeatures = [imLBPfeatures; imLBPfeature]; % LBP特征
- end
- end
- plot(imLBPfeatures)
复制代码
参考论文:OLED panel defect detection using local inlier-outlier ratios and modified LBP
|
|