1、1. 图片”条纹 .bmp”中包一定间隔的条纹,要求测量条纹的间隔(以像素为尺度)和方向(假设单个像元为方形,及长度和宽度一致) 。matlab 程序% 条纹处理 2010 年 6 月 25 日 % 打开图片 FileName,PathName = uigetfile(*.bmp,BMP 文件(*.bmp);*.*, . All Files (*.*), Select the Target-file);file=PathName,FileName;if isequal(FileName,0)return;elseg=imread (file);figure(1); %原图imshow(g);I
2、=rgb2gray(g); %灰度化J=I;row,col=size(I);Bi=im2bw(J,graythresh(J); %二值化 graythresh(J): Otsu 方法确定阈值J8,n8=bwlabel(Bi,8); %贴标签% 去除边沿非整条纹for i = 1:rowif J8(i,1)=0 temp= J8(i,1);r,c=find(J8(i,:)=temp);J8(i,c)=0;endif J8(i,col)=0temp= J8(i,col);r,c=find(J8(i,:)=temp);J8(i,c)=0; endendfigure(2);imshow(J8);% 条
3、纹中线JL=zeros(size(J8); for i = 1:rowfor j=1:n8r,c=find(J8(i,:)=j);if(isempty(c)JL(i,round(sum(c)/length(c)=j; endendendfigure(3);imshow(JL);% 计算倾角间距i=1;for j=1:n8r,c=find(JL=j);if(isempty(c)p(i,:)=polyfit(c,r,1); %拟合i=i+1;endendSlope=sum(p(:,1)/length(p(:,1); %斜率if Slope0Inclination=-atan(Slope)/pi*1
4、80; %倾角elseInclination=180-atan(Slope)/pi*180; endmyL=p(:,2);gap=0;lhalf=round(length(p(:,2)/2);for i=lhalf+1:length(p(:,2)gap=gap+myL(i)-myL(i-lhalf); endgap=(gap/(i*lhalf)*sin(Inclination/180*pi);str1=条纹间隔: num2str(gap) 像素n;str2=条纹与水平夹角: num2str(Inclination) 度;msgbox(str1;str2);end% 保存图片% file,path = uiputfile(*.bmp,BMP 文件(*.bmp);*.*, . % All Files (*.*),Save file name);% PF=path,file;% if isequal(file,0)% return;% else% imwrite(JL,PF,bmp);% end