matlab中的中值计算(图像处理)

Median calculation in matlab(image processing)

我正在尝试使用 regionprops 为每个连接的组件找到 MajorAxisLength。然后我为 same.But 计算 median 我得到了错误的值median.Here 是我的代码-

  clc;
image=imread('test3.png');

image = im2bw(image);
image=imcomplement(image);

[imx imy]=size(image);
n1=zeros(imx,imy);
count=1;
connected = bwlabel(image,8) ;
mx=max(max(connected));
for i=1:mx
    [r,c] = find(connected==i);
    test=zeros(imx,imy);
    rc = [r c];
    [sx sy]=size(rc);


    for j=1:sx
        x1=rc(j,1);
        y1=rc(j,2);
        test(x1,y1)=1;
    end
    s(i)=regionprops(test,'MajorAxisLength');
    if(s(i).MajorAxisLength >=5)
       ss(count)=s(i).MajorAxisLength;
       count=count+1;       
    end
end



for k=1:count
    disp(ss(k));
end
M=median(ss)

这些是我为 ss array-

得到的值
100.7208    
141.7638
108.0241
102.5751
84.8693
107.9178
97.9122
183.8361
95.8895
102.5912
90.2462

这是我得到的中位数值(肯定是错误的)-

M =

   25.3651

这是我的输入图像-

这是因为您可能 运行第二次使用与第一次不同的图像 time.The 变量 ss 已经存储在内存中并且它有元素你最后的 运行 也 stored.Say 例如你的最后一个测试图像你在 ss 中有 50 元素,这次你只得到 25.Still ss保存在内存中,并具有所有 50 elements.So 用于中位数计算所有这些值都是 used.You 可以使用它来声明数组-

ss = zeros(mx,1);

这应该适合你。