%%
clc,clear,close all
a = imread('1.jpg');
figure,imshow(a)
b = im2bw( a, 0.2 );
figure,imshow(b)
c = imopen( b, ones(20,20) ); %开运算,使边界平滑
figure,imshow(c)
d= edge( c );
figure, imshow(d)
labels = bwlabel( d );
for ii = 1:size(labels, 1)
[r1, c1] = find( labels(ii,:) == 1 );
[r2, c2] = find( labels(ii,:) == 2 );
c( ii, floor((c1+c2)/2+0.5) ) = 0;
end
figure,imshow(c)
宽度计算并且画出中心线:
clc,clear,close all
a = imread('03123.jpg');
b = im2bw( a, 0.2 );
d= edge( b );
labels = bwlabel( d );
size(labels,2);
[r1, c1] = find( labels == 1 );
[r2, c2] = find( labels == 2 );
for ii = 1:size(labels,2);
[r1, c1] = find( labels == 1 );
[r2, c2] = find( labels == 2 );
i=1;
while i<1144
if c1(i)==c1(i+1)
c1(i+1) = [];
r1(i+1) = [];
else
i = i + 1;
end
end
i=1;
while i<1144
if c2(i)==c2(i+1)
c2(i+1) = [];
r2(i+1) = [];
else
i = i + 1;
end
end
end
for xx =1:1144
g=floor((r1(xx)+r2(xx))/2+0.5);
b(g,xx)=0;
c(g,xx)=2; %%%找出中线并只显示中线
end
figure,imshow(b);
评论0