0

我正在尝试在 MATLAB 中执行本地二进制模式。LBP 工作正常,但我的结果问题是我想在 LBP 完全完成时获取这些零和一个,并将所有 0 和 1 放入行向量

我试图将所有 0 和 1 放入数组中,但 8 次会将所有 0 和 1 放入数组中 for 循环的原因。我使用的图像是 256x256,这意味着我应该得到 256 0 和 1,但现在我得到 2048,如果我们将 2048 除以 8,我们将得到 256,这意味着 8 次将把 0 和 1 放入 C 数组我希望现在更清楚

这是我的代码::::

C=[];   %%% this array collect all zeros and ones 
for i=2:r-1
    for j=2:c-1
        if x(i,j)>x(i-1,j-1)
            arr(1,1)=0;
        else
            arr(1,1)=1; 
        end
         if x(i,j)>x(i-1,j)
            arr(1,2)=0;
        else
            arr(1,2)=1; 
        end 
        if x(i,j)>x(i-1,j+1)
            arr(1,3)=0;
        else
            arr(1,3)=1; 
        end
        if x(i,j)>x(i,j+1)
            arr(1,4)=0;
        else
            arr(1,4)=1; 
                end
                if x(i,j)>x(i+1,j+1)
            arr(1,5)=0;
        else
            arr(1,5)=1; 
                end
                 if x(i,j)>x(i+1,j)
            arr(1,6)=0;
        else
            arr(1,6)=1; 
                end
             if x(i,j)>x(i+1,j-1)
            arr(1,7)=0;
        else
            arr(1,7)=1; 
             end
             if x(i,j)>x(i,j-1)
            arr(1,8)=0;
           else
            arr(1,8)=1; 
             end

             %Convert Binary to Dec
        newimg(i,j)=sum(arr.*2.^(numel(arr)-1:-1:0));  


    end


C=[C arr];   %%  I think my problem with this line to putting zeros and one to C array

end

C
4

1 回答 1

0

如果要将所有像素的二进制序列存储到 中C,请将语句放在两个循环中,如下所示:

C=zeros(8,254*254);   %%% this array collect all zeros and ones 
for i=2:r-1
    for j=2:c-1

     % ... if conditions here...

        %Convert Binary to Dec
        newimg(i,j)=sum(arr.*2.^(numel(arr)-1:-1:0));  


       C(:,j-1+(i-2)*254) = arr(:);

    end    
end

请注意,这C不是256 x 256 而是 254 x 254(查看循环的范围)。

我将其设置为C按列存储数据,每个像素一列

于 2013-09-22T17:28:44.323 回答