一、概述与原理
局部图结构(Local Graph Structure)是由Abusham E A提出的,该算子能将图像的局部特征信息很好的表示,其对于纹理的分辨能力很强,对灰度的单调变化不敏感。
关注一个3*4的区域,LGS与6个领域像素有关。如下图[1]所示:
算子的基本原理:从灰色点出发,沿着左上方走一个“8”字路径。(例如:图中路径即为7-9-5-7-6-7-7-6-7)在行进过程中,如果下一个节点比当前节点要更大,则为0,否则取1.(例如从起点7出发,到下一个节点9,因为9>7,则取0)随着在路径中两两节点的比较,将会得到一个01序列,我们视之为一个二进制数。显然上图中我们所得到的二进制数为0.在经过二进制到十进制的转换后,展示的数是86.

二、LGS算子的数学表达
在对局部结构图有了一个基本的认识后,我们再引入数学表述,这样能更好理解数学公式!


其中(xd,yd)表示原中心像素位置。
该算子本质上就是一个判断,然后进行二进制转十进制的加和,非常简单!
ps:我觉得这个算子在另一个方面是很巧妙的,它恰好有8为二进制序列,这样从00000000-恰好能表达十进制数中的0-255.也就是对于每一个像素点而言,是从[0,255]->[0,255]的。具有这样的映射关系,还是比较巧妙的,再次生成的图像不需要更改数据类型和灰度范围就能有比较好的效果。
三、综合评价
1.在复杂光照下,LGS算子是有极大的效果的,因为当光照不同时,对于同一个局部信息而言,相对灰度值大小并不会发生变化。
2.个人以为,LGS对待图片旋转即会失效,所以对于所有图像,或者多数变换类型而言,不具有普适性。
四、代码实现
main.m
clear clc image = imread('lena.jpg'); %读取图片 lgs = LGS(image); %调用LGS算子的函数 figure(1); imshow(lgs,[]); %显示图像 title('LGS'); figure(2); hist(lgs); title('LGS直方图') %显示直方图
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/31290.html