close all
clear
clc
A=imread('Fig0926(a)(rice).tif');%读入图片
A=im2double(A);%精度转换
figure,imshow(A),title('A');%显示原图片
se = strel('disk',10);
B=imopen(A,se);%对原图片进行开操作
figure,imshow(B),title('B');
C=A-B;%原图减去开操作后的图片,使背景灰度均衡
se = strel('disk',3);
C=imopen(C,se);%再一次对实验图片进行开操作,避免各个米粒粘连
figure,imshow(C),title('C');
h=fspecial('average');
D=imfilter(C,h);%对图片进行均值滤波,去除噪声
figure,imshow(D),title('D');
maxGray=max(D(:));%灰度最大值
minGray=min(D(:));%灰度最小值
threshold=0.5*(maxGray+minGray);%求出灰度的中值
E=(D>threshold);%求出图片的二值化图
figure,imshow(E),title('E');
[connectedLabel,connectedNum] = bwlabel(E,4);%求出连同区域,以及他们的label
ellipse=regionprops(connectedLabel,'all');%对每个连通区域的像素进行椭圆拟合
MajorAxisLength=regionprops(connectedLabel,'MajorAxisLength');
MajorAxisSum=0;
for i=1:connectedNum
MajorAxisSum=MajorAxisSum+ellipse(i).MajorAxisLength;
end
MajorAxisMean = MajorAxisSum/connectedNum;%所有椭圆的长轴平均值
figure,imshow(A),title('Result');
hold on
%检测每一个椭圆,若椭圆的长轴短于所有椭圆长轴的平均值,则认为该椭圆为碎米,并作出标注
for i=1:connectedNum
if ellipse(i).MajorAxisLength<(MajorAxisMean)
centroids = cat(1, ellipse(i).Centroid) ;
plot(centroids(:,1), centroids(:,2), 'r*');
end
end
hold off
阿里matlab建模师
- 粉丝: 3712
- 资源: 2812
最新资源
- PLC 程序 2号卸垛AD778899.gxw
- C#ASP.NET大学在线考试系统源码数据库 SQL2008源码类型 WebForm
- PLC 程序 2号送盖机123DF456.gxw
- ta-lib-0.5.1-cp311-cp311-win-amd64.whl
- 二车间 PLC 程序2号码垛机.gxw
- Qt QChart+Eigen库 绘制线性回归图表,源代码和库都在压缩包里
- 二车间 PLC 2号包装机.gxw
- onnxruntime-win-x64-gpu-1.19.2.zip
- 一车间4号包装机 GX Works3 PLC项目
- java校园管理平台源码数据库 MySQL源码类型 WebForm
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
前往页