我在做一个基于Matlab的螺纹参数测量
图片1.jpg (59.54 KB, 下载次数: 11)
部分图片
2015-5-21 20:56 上传
7.jpg (52.43 KB, 下载次数: 11)
处理图片
2015-5-21 20:56 上传
I=imread('7.jpg'); %读取图片文件中的数据b=rgb2gray(I); %将真彩色图像转换为灰度图像 imwrite(b,'1.灰度图像.jpg');%将图像数据写入到图像文件中figure(1),subplot(2,3,1),imshow(b),title('1.灰度图像')g_max=double(max(max(b))); %换成双精度数值g_min=double(min(min(b))); %换成双精度数值imwrite(b,'2.二值图像.jpg'); %将图像数据写入到图像文件中figure(1),subplot(2,3,2),imshow(b),title('3.均值滤波前') % 滤波h=fspecial('average',3);%建立预定义的滤波算子,average指定算子的类型,3为相应的参数 imwrite(b,'4.均值滤波后.jpg'); %将图像数据写入到图像文件中figure(1),subplot(2,3,3),imshow(b),title('4.均值滤波后')T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值[m,n]=size(b); %返回矩阵b的尺寸信息, 并存储在m、n中。其中m中存储的是行数,n中存储的是列数。d=(double(b)>=T); % d:二值图像d=im2bw(round(filter2(h,d)));%转换为二值图像figure(1),subplot(2,3,4),imshow(d),title('2.二值图像')h=edge(d,'canny',0.08,'vertical'); %高斯滤波器,方差为0.08% figure(5),imshow(h);title('算子边缘检测')% 某些图像进行操作% 膨胀或腐蚀 se=strel('square',5); % 使用一个3X3的正方形结果元素对象对创建的图像膨胀% 'line'/'diamond'/'ball'...se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵[m,n]=size(d); %返回矩阵b的尺寸信息, 并存储在m、n中。其中m中存储的是行数,n中存储的是列数 if bwarea(d)/m/n>=0.365 %计算二值图像中对象的总面积 d=imerode(d,se); %图像的腐蚀elseif bwarea(d)/m/n<=0.235 %计算二值图像中对象的总面积 d=imdilate(d,se); %实现膨胀操作endimwrite(d,'5.膨胀或腐蚀处理后.jpg'); %将图像数据写入到图像文件中figure(1),subplot(2,3,5),imshow(d),title('5.膨胀或腐蚀处理后')figure(1),subplot(2,3,6),imshow(h);title('算子边缘检测')% 某些图像进行操作边缘提取后的螺纹参数螺距、牙型角和中径的测量程序不是很清楚,不知道有木有大婶可以帮助进行这一部分的知道。