【问题标题】:How to get 0 and 1 pixel after using LBP in matlab?在matlab中使用LBP后如何获得0和1像素?
【发布时间】:2013-09-27 14:06:18
【问题描述】:

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

我尝试将所有 0 和 1 放入数组,但 8 次会将所有 0 和 1 放入数组中,因为 for 循环。 我使用的图像是 256x256,这意味着我应该得到 256 0 和 1,但现在我得到 2048,如果我们将 2048 除以 8,我们将得到 256,这意味着 8 次会将 0and1 放入 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

【问题讨论】:

  • 您可以随时编辑您的原始问题...我仍然对此感到困惑,但我认为其他人也许可以帮助您...
  • 好的,但如果你在第二个结束循环之前看到我的代码,我写了注意我向 C 数组添加值的问题
  • 我尝试了一个答案,看看我是否理解:)

标签: matlab image-processing computer-vision


【解决方案1】:

如果要将所有个像素的二进制序列存储到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 按列存储数据,每个像素一列

【讨论】:

  • 我把 254 改成了 1 C(:,j+(i-1)*-1) = arr(:);所以我得到了 C 行向量 1by256 但我不知道你觉得对不对
  • @dlogold 我不完全理解你想要做什么......无论如何我的回答都会生成一个 8 x 64516 数组。如果您只执行其中一个循环,您将获得一个 8 x 254 数组。另一方面,你提出的改变对我来说没有多大意义......
猜你喜欢
  • 2012-08-17
  • 2018-09-26
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 2015-09-20
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多