matlab实现Sobel算子 和 LBP

2.Sobel算子
Sobel算子主要用作边缘检测,它是一离散型差分算子,用来计算图像亮度函数灰度之近似值。边缘是指其周围像素灰度急剧变化的那些像素的集合。边缘存在于目标、背景和区域之间,所以,边缘是图像分割所依赖的最重要的依据。
将Sobel算子的实现划分为五个步骤:
(1) 计算Gx与Gy与模板每行的乘积。
(2) 两个3x3矩阵的卷积即将每一行每一列对应相乘然后相加。
(3) 求得33模板运算后的Gx、Gy。
(4) 求Gx^2 + Gy^2的平方根或者直接对Gx和Gy取绝对值后求和。
(5)设置一个阈值,运算后的像素值大于该阈值输出为全1,小于该阈值输出为全0。
在这里插入图片描述
代码:
i=imread(‘lenna.jpg’);
i=rgb2gray(i);
subplot(131);imshow(i);title(‘原图’);
[m, n] = size(i);
d = double(i);
dSobel = i;
kSobel = i;
for i = 2 : m-1
for j = 2 : n-1
Gx = (d(i+1,j-1) + 2
d(i+1,j) + d(i+1,j+1)) - (d(i-1,j-1) + 2d(i-1,j) + d(i-1,j+1));
Gy = (d(i-1,j+1) + 2
d(i,j+1) + d(i+1,j+1)) - (d(i-1,j-1) + 2*d(i,j-1) + d(i+1,j-1));
dSobel(i, j) = sqrt(Gx^2 + Gy^2);
kSobel(i, j) = abs(Gx) + abs(Gy);
end
end
subplot(132);imshow(dSobel);title(‘Sobel算子(1)’);
subplot(133);imshow(kSobel);title(‘Sobel算子(2)’);

结果:
在这里插入图片描述
其中Sobel算子(1)是用求Gx^2 + Gy^2的平方根得到的结果,Sobel算子(2)是直接对Gx和Gy取绝对值后求和。算子(1)精度高,但是运算量大;算子(2)简单但是丢失了精度。
3.LBP算法
算法步骤:

  1. 用3*3的模板对图像每个像素进行处理,比较当前像素和周围像素的大小,将大于当前像素的置1,小于的置0。
  2. 对这周围八个像素进行编码,这八个0和1正好是可以组成一个byte数,然后按一定的规则组成这个无符号数。
  3. 把这个数赋值给当前像素。
    代码
    i = imread(‘lenna.jpg’);
    B=rgb2gray(i);
    [m,n]=size(B);
    subplot(121);imshow(B);title(‘原图’);
    X=[-1,-1,-1,0,1,1,1,0];
    Y=[-1,0,1,1,1,0,-1,-1]; %(从左上角逆时针)
    prop=[];
    LBPimage=B;
    value=0;
    for i=2:m-1
    for j=2:n-1
    for k=1:8
    x=i+X(k);
    y=j+Y(k);
    if B(i,j)>B(x,y)
    prop(k)=0;
    else
    prop(k)=1;
    end
    end
    for m=1:8
    value=value+(2^(8-m))*prop(m);
    end
    LBPimage(i,j)=value;
    value=0;
    end
    end
    subplot(122);imshow(LBPimage);title(‘LBP算法’);
    结果:
    在这里插入图片描述
  • 3
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值