资源描述:
《图像处理_条纹检测》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.图片”条纹.bmp”中包一定间隔的条纹,要求测量条纹的间隔(以像素为尺度)和方向(假设单个像元为方形,及长度和宽度一致)。matlab程序%条纹处理2010年6月25日%%打开图片[FileName,PathName]=uigetfile({'*.bmp','BMP文件(*.bmp)';'*.*',...'AllFiles(*.*)'},'SelecttheTarget-file');file=[PathName,FileName];ifisequal(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);%贴标签%%去除边沿非整条纹fori=1:rowifJ8(i,1)~=0temp=J8(i,1);[r,c]=find(J8(i,:)==temp);J8(i,c)=0;endifJ8(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));fori=1:rowforj=1:n8[r,c]=find(J8(i,:)==j);if(~isempty(c))JL(i,round(sum(c)/length(c)))=j;endendendfigure(3);imshow(JL);%%计算倾角间距i=1;forj=1:n8[r,c]=find(JL==j);if(~isempty(c))p(i,:)=polyfit(c,r,1);%拟合i=i+1;endendSlope=sum(p(:,1))/length(p(:,1));%斜率ifSlope<0Inclination=
4、-atan(Slope)/pi*180;%倾角elseInclination=180-atan(Slope)/pi*180;endmyL=p(:,2);gap=0;lhalf=round(length(p(:,2))/2);fori=lhalf+1:length(p(:,2))gap=gap+myL(i)-myL(i-lhalf);endgap=(gap/(i*lhalf))*sin(Inclination/180*pi);str1=['条纹间隔:'num2str(gap)'像素'];str2=['条纹与水平夹角:'num2str(Inclination)'度'];msgbo
5、x([str1;str2]);end%%保存图片%[file,path]=uiputfile({'*.bmp','BMP文件(*.bmp)';'*.*',...%'AllFiles(*.*)'},'Savefilename');%PF=[path,file];%ifisequal(file,0)%return;%else%imwrite(JL,PF,'bmp');%end