我在毕业设计中遇到一个问题,就是每次想提取出图像的轮廓长和宽的时候,提取出来的都是图片的长和宽。举个例子,我想提取数字2的大小,就是拿四条切线切出来的2的大小,结果每次提取出来的都是图片的大小。
不清楚是不是因为我前面把图像压缩的缘故,把代码放在下面,希望大家帮忙出出主意。
%%%%%%%%%%%%%%%%%预处理算法%%%%%%%%%%%%%%%%%%%%%%%
f=imread('.\images\9\9-1.jpg');
%% 二值化
level=graythresh(f);
f=im2bw(f,level);
f=imresize(f,[256,300]);
%% 滤波去噪
h=1/10*[1,1,1;1,2,1;1,1,1];
f=filter2(h,f);
%% 膨胀
se=strel('disk',2);
f=imerode(f,se);
f=f<1;
f = bwmorph(f, 'thin', inf);
%%
bw=bwperim(f);
[y2temp x2temp]=size(bw) %%这句应该是提取边界的长和宽的,但是每次出来的都是压缩过的大小,即256*300
%%下面这段代码我想计算图像的上下左右切点的坐标,结果x1 x2 y1 y2还是图片本身的大小,1,256,1,300
x1=1;
y1=1;
x2=x2temp;
y2=y2temp;
cntB=1;
while(sum(bw(:,cntB))==y2temp)
x1=x1+1;
cntB=cntB+1;
end
cntB=1;
while(sum(bw(cntB,:))==x2temp)
y1=y1+1;
cntB=cntB+1;
end
cntB=x2temp;
while(sum(bw(:,cntB))==y2temp)
x2=x2-1;
cntB=cntB-1;
end
cntB=y2temp;
while(sum(bw(cntB,:))==x2temp)
y2=y2-1;
cntB=cntB-1;
end
希望大家不吝赐教。多谢