% function census(image,window_size)
[h,w] = size(image);
window_size = 3;
pading_size = (window_size - 1) /2;
win_center = (window_size +1)/2;
after_padding = [zeros(h,pading_size),image,zeros(h,pading_size)];
after_padding = [zeros(pading_size,2*pading_size +w);after_padding;zeros(pading_size,2*pading_size +w)];
census_image = zeros(h,w);
for i = 1:h
for j = 1:w
win = after_padding(i:i+window_size-1,j:j + window_size-1);
a = win - win(win_center,win_center);
b = a>0;
list = reshape(b,1,window_size.^2);
list(5) = [];
c = bin2dec(list);
census_image(i,j) = c;
end
end
% end
其中二进制列表转化为十进制数的代码如下:
function dec = bin2dec(list)
L = length(list);
b = 0:L-1;
c = 2.^b;
dec = sum(c.*list);
end