Hello Mat

 找回密码
 立即注册
查看: 5661|回复: 0

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

[复制链接]

1294

主题

1520

帖子

112

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22635
发表于 2017-8-24 23:49:23 | 显示全部楼层 |阅读模式
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 为中心模板点的灰度值,gp8邻域灰度值。
weight = 1,2,4,8,16,32,64,128.

LBP是对整幅图像进行掩膜mask扫描,mask互不重叠,所有的mask构成整幅图像,s(x)是对mask邻域区域、中心区域进行二值化比较操作;

LBP最后一步是分块求解直方图特征,HoG特征也用到这一点;

具体代码如下:
  1. clc,clear,close all
  2. warning off
  3. im = imread('Logo.jpg');
  4. if size(im,3)>1
  5.     im = rgb2gray(im);
  6. end
  7. im = imresize(im,[100 100],'bicubic'); % 归一化
  8. imshow(im)

  9. if ~isfloat(im)
  10.     im = double(im);
  11. end
  12. mask = 5;
  13. % im为灰度图像
  14. [Height,Width] = size(im);
  15. imB = zeros(Height+(mask-1), Width+(mask-1));  % 初始化,扩边处理
  16. imB(3:end-2, 3:end-2) = im;
  17. % imshow(imB,[])
  18. alpha = 0.5;
  19. beta = 1-alpha;
  20. imD0 = imB(3:end-2, 1:Width) - im;  % 列偏移,相减
  21. imD1 = imB(3:end-2, 5:end) - im;    % 列偏移,相减
  22. imD2 = imB(1:Height, 3:end-2) - im; % 行偏移,相减
  23. imD3 = imB(5:end, 3:end-2) - im;    % 行偏移,相减
  24. imD4 = alpha*imB(4:end-1, 2:end-3) + beta*imB(5:end, 1:Width) - im;
  25. imD5 = alpha*imB(4:end-1, 4:end-1) + beta*imB(5:end, 5:end) - im;
  26. imD6 = alpha*imB(2:end-3, 4:end-1) + beta*imB(1:Height, 5:end) - im;
  27. imD7 = alpha*imB(2:end-3, 2:end-3) + beta*imB(1:Height, 1:Width) - im;
  28. weight = 2.^(0:1:7)';
  29. imD = [imD0(:),imD1(:),imD2(:),imD3(:),imD4(:),imD5(:),imD6(:),imD7(:)];
  30. imD = imD>=0;           % 二值化操作
  31. imDw = imD*weight;      % 二进制转化为十进制
  32. imLBP = reshape(imDw, [Height,Width]);
  33. imshow(imLBP,[])

  34. % mask = 5;
  35. % alpha = 0.5;
  36. % imLBP = LBP_Image( im, mask, alpha );   % 图像LBP特征求解
  37. % imshow(imLBP,[])

  38. imf = mat2gray(imLBP);
  39. imk = im2uint8(imf);
  40. imshow(imk,[])

  41. stride = 20;   % 步长
  42. imLBPfeatures = [];
  43. for i=1:stride:size(im,1)-stride
  44.     for j=1:stride:size(im,2)-stride
  45.         imLBPpart = imLBP(i:i+stride-1, j:j+stride-1);
  46.         imLBPfeature = imhist(imLBPpart)/(size(imLBPpart,1) * size(imLBPpart,2));
  47.         imLBPfeatures = [imLBPfeatures; imLBPfeature];  % LBP特征
  48.     end
  49. end
  50. plot(imLBPfeatures)
复制代码

参考论文:OLED panel defect detection using local inlier-outlier ratios and modified LBP










算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-5-2 16:54 , Processed in 0.244499 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表