您的位置:首页 > 移动开发

matlab中getmapping函数

2017-07-19 16:58 113 查看
1、getmapping函数部分代码:

%samples表示邻域节点个数

table = 0:2^samples-1;

newMax = 0; %number of patterns in the resulting LBP code

index = 0;

if strcmp(mappingtype,’u2’) %Uniform 2

newMax = samples*(samples-1) + 3;%newMax是统一LBP(二进制编码01转化个数大于2的那些作为一项)需要统计的可能编码数目

for i = 0:2^samples-1

j = bitset(bitshift(i,1,samples),1,bitget(i,samples)); %循环左移一位

numt = sum(bitget(bitxor(i,j),1:samples)); %number of 1->0 and

%0->1 transitions

%in binary string

%x is equal to the

%number of 1-bits in

%XOR(x,Rotate left(x))

%通过循环左移一位后的值和原值按位亦或来求得01原二进制编码中互相转换的个数

if numt <= 2

table(i+1) = index;%转换个数<=2的,该二进制对应十进制记录为一个索引值

index = index + 1;%为下一个转换个数<=2的二进制备用索引

else

table(i+1) = newMax - 1;%当前数值的二进制如果转换个数>2,则设置其值为索引的最大值(如果邻域为8,那么可能出现的转换<=2的二进制共有samples*(samples-1) + 3=59个)

end

end

end

由此,函数输出table记录 的是samples个邻域可能组成的01编码所对应的索引值。这样,当一副图像中某个像素和邻域像素的大小关系用01二进制表示出来后,就可以找到其对应的索引,这样的话整幅图像就可以统计不同二进制的直方图了。例如:



如上图所示,访问table(195)得到对应的索引,统计直方图时将该索引对应个数+1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: