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);
这应该适合你。
我正在尝试使用 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);
这应该适合你。