Halcom 发表于 2017-8-24 23:49:23

LBP(Local Binary Pattern)图像算法(图像纹理提取)

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,,'bicubic'); % 归一化
imshow(im)

if ~isfloat(im)
    im = double(im);
end
mask = 5;
% im为灰度图像
= 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 = ;
imD = imD>=0;         % 二值化操作
imDw = imD*weight;      % 二进制转化为十进制
imLBP = reshape(imDw, );
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 = ;% LBP特征
    end
end
plot(imLBPfeatures)
参考论文:OLED panel defect detection using local inlier-outlier ratios and modified LBP










页: [1]
查看完整版本: LBP(Local Binary Pattern)图像算法(图像纹理提取)