subplot(m,n,p)或subplot(mnp) 将figure划分为m×n块,在第p块创建坐标系。当m,n,p<10时,可以简化为subplot(mnp)或者subplot mnp
如:subplot(2,2,2)表示将figure分为2x2块,图像放在figure的从左往右第2块的位置上。
[l,n]=
bwlabel(im);
stats
=
regionprops(l,'perimeter');%%l是标记矩阵,图像分割后对不同的区域进行不同的标记
w=[statsperimeter];
该函数用来测量标注矩阵l中每一个标注区域的一系列属性。l中不同的正整数元素对应不同的区域,例如:l中等于整数1的元素对应区域1;l中等于整数2的元素对应区域2;以此类推。
返回值stats是一个长度为max(l(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。
properties可以是由逗号分割的字符串列表、包含字符
串的单元数组、单个字符串'all'或者'basic'。如果properties等于字符串'all',则表中的度量数据都将被计算;如果properties等于字符串'basic',则属性:'area','centroid'和'boundingbox'将被计算。下面就是所有有效的属性字符串。
properties值
度量图像区域的属性或功能
'area'
图像各个区域中像素总个数
'boundingbox'
包含相应区域的最小矩形
'centroid'
每个区域的质心(重心)
'majoraxislength'
与区域具有相同标准二阶中心矩的椭圆的长轴长度(像素意义下)
'minoraxislength'
与区域具有相同标准二阶中心矩的椭圆的短轴长度(像素意义下)
'eccentricity'
与区域具有相同标准二阶中心矩的椭圆的离心率(可作为特征)
'orientation'
与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角(度)
'image'
与某区域具有相同大小的逻辑矩阵
'filledimage'
与某区域具有相同大小的填充逻辑矩阵
'filledarea'
填充区域图像中的on像素个数
'convexhull'
包含某区域的最小凸多边形
'conveximage'
画出上述区域最小凸多边形
'convexarea'
填充区域凸多边形图像中的on像素个数
'eulernumber'
几何拓扑中的一个拓扑不变量——欧拉数
'extrema'
八方向区域极值点
'equivdiameter'
与区域具有相同面积的圆的直径
'solidity'
同时在区域和其最小凸多边形中的像素比例
'extent'
同时在区域和其最小边界矩形中的像素比例
'pixelidxlist'
存储区域像素的索引下标
'pixellist'
存储上述索引对应的像素坐标
'perimeter'
边界象元所连成闭合曲线的周长
image_1=imread('E:\ebook\lenabmp'); %读入
image_1=rgb2gray(image_1);%灰度化
[m,n]=size(image_1);%计算的像素点个数,行列,n是列数,Gray
num=zeros(1,256);%存放各灰度级出现的次数
p=zeros(1,256);%存放各灰度级的比率
image_1=double(image_1);%双精度化
for i=1:m
for j=1:n
num(image_1(i,j)+1)=num(image_1(i,j)+1)+1;%统计各灰度级的像素点个数
end
end
for i=1:256
p(i)=num(i)/(mn);%计算各灰度级出现的比率
end
for i=2:256
if p(i)~=0
st=i+1;%实现寻找出现比率不为0的最小灰度值
break
end
end
for i=256:-1:1
if p(i)~=0;
nd=i-1;%实现找出出现比率不为0的最大灰度值
break
end
end
%以下程序实现利用最小方差和法找出门阈值
w=inf; th=0;
for t=st:nd%最小非零比率灰度值到最大非零比率灰度值
qt1=0; qt2=0;%前景后景像素点比率
u1=0; u2=0;%前景后景均值
v1=0; v2=0;%
for i=1:t
qt1=qt1+p(i);
end
for i=1:t
u1=u1+ip(i)/qt1;
end
for i=1:t
v1=v1+((i-u1)^2)p(i)/qt1;
end
for i=t+1:256
qt2=qt2+p(i);
end
for i=t+1:256
u2=u2+ip(i)/qt2;
end
for i=t+1:256
v2=v2+((i-u2)^2)p(i)/qt2;
end
if qt1v1+qt2v2<w
th=t; w=qt1v1+qt2v2 ;
end
end
for i=1:m
for j=1:n
if (image_1(i,j)+1>th)
image_2(i,j)=255;
else
image_2(i,j)=0;
end
end
end
image_2=uint8(image_2);%读入读出变换
figure,imshow(image_2);%显示二值化后的
clear all;
clc;
str='picturename';%这个地方改成你的的名称记得加上路径
img=imread([str,'jpg']);%读图像
img=rgb2gray(img)%变成灰度图像
level = graythresh(img);
bw=im2bw(img,level);%变成二值话
[row col]=size(bw);
%完成二值化 下面是要找到分割的坐标 注意是在img 上进行分割 产生单独的保存出来 任务就完成了
%这个是分成列
result1=sum(bw,2);%对每行求和得到列向量
[val ind]=max(result1);%返回最大的和 的下标,ind 即为焊接缝隙
因为黑色是0 白色是1 所以对行求和最大的值出现的地方就是焊接的缝隙
有什么不懂的你可以回复我,祝好!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)