资源描述:
《论文附录程序代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、附录A程序代码MatlabCODEcloseallclcFileName=,C:Test~03.bmp,;%文件路径ColorType=imfinfo(FileName);Co1orType=Co1orType.ColorType;%获取图像颜色类型switch(ColorType)%读取一幅图像casetruecolor"I=rgb2gray(imread(Fi1eName));case,indexed"[I,map]=imread(FileName);I=im2double(I,'indexed');%读取图
2、像otherwiseI=imread(FileName);endclearFi1eName;c1earCo1orType;I=~I;%反色处理%%定义特征长度变量%%Length。二0;%】顶端特征长度Lengthl=0;%最低端特征长度Length2=0;%最右(左)端特征长度Length3=0;%开口度特征长度%%确定吊钩区域bw=im2bw(I);%二值化处理bw_open=bwareaopen(bw,8000);%去掉小区域bw_fill=imf订1(bw_open,'hole');%填充吊钩区域bw_ro
3、t=bw_fill;%%暂时未对图像进行软件自动旋转处理%%Radon变换,旋转校正%theta=-30:1:30;%[R,xp]=radon(bw_f订1,theta);%Radon变换%[I0,J]=find(R>=max(max(R)));%记录了倾斜角%qingxiejiao=J;%bw_rot二imrotate(bw_fill2,qingxiejiao,'b订inear','crop,);%bw_rot为旋转校正后的图像%%求最小外接矩形,便于剪裁出吊钩区域图像[L,num]=bwlabel(bwrot)
4、;%区域标记stats=regionprops(L);%区域属性fori=l:numrect二stats(i)・BoundingBox;cen=stats(i)・Centroid;%rectangle(,Position',rect,'EdgeColor,,‘r');画出矩形区域end%%最小外接矩形剪裁图像bw_crop=imcrop(bw_rot,rect);%剪裁图像[m,n]=size(bw_crop);%求出裁剪后图像的大小,即图像的高度和宽度imshow(bw_crop);hoidon%显示裁剪后的图像
5、%%确定一个矩形的范围用于确定中心线位置(矩形左上角坐标以及矩形宽度和高度)[1,210,n,10]暂时为人工指定的区域。Rect_x0=l;Rect_y0=210;Rect_Width=n;Rect_Height=50;rectanglePosition,,[Rect_x0,Rect_y0,Rect_Width,Rect_Height],'EdgeColor,,‘g');%显示自定义的矩形区域%确定吊钩中心线x_center二0;forj=Rect_yO:(Rect_yO+Rect_Height-l)%自定义矩形
6、区域内每行寻找吊钩脖颈部分的横坐标最小值和最大值xmin=0;x_max=O;fori=Rect_xO:(Rect_xO+Rect_Width-l)ifbw_crop(j,i)==l&x_min==0%bw_crop(纵坐标,横坐标)x_min=i;endifbw_crop(j,i)=l&i>x_maxx_max=i;endendx_center=x_center+((x_min+x_max)/2);%所有中点横坐标求和Length。二LengthO+(x_max-x_min);%所有距离求和endx_center
7、=ceil(x_center/Rect_Height)%所有中点横坐标求平均值LengthO=LengthO/Rect_Height%所有距离求平均line([x_center,x_center],El,m],*color,,‘b');%画出中心线%%确定最顶端特征长度(像素个数)line([x_center-ce订(LengthO/2),x_center+ceil(LengthO/2)],[Rect_yO+ceil(Rect_Height/2),Rect_yO+ceil(Rect_Height/2)],'colo
8、r,,‘r');%%寻找最低端特征长度(像素个数)i=0;y_centerl=O;y_center2=0:y_center3=0;forj=Rect_yO:mifbw_crop(j,x_center)二二0&i=0i二1;y_centerl=j;endifi=l&bw_crop(j,x_center)==11=2;y_center2=j;endifi==2&