数字图像处理之图像形态学

记一次作业,统计一张图上的粒子分布——利用白顶帽变换统计各个尺寸的结构元的频数,最终绘制直方图。

% 利用matlab的内置函数进行灰度形态学的计算
clear;
I=imread('Chapter5_1.bmp');
% imshow(I)
% rectangle('Position',[208,218,10,10],'edgecolor','r') %衡量小粒子的大小
% rectangle('Position',[80,10,120,120],'edgecolor','r') %衡量小粒子的大小

count=[];
for x=3:2:119
size1=x;%WTH加强亮细节,结构元大于亮细节尺寸
SE1=strel('square',size1);
Iop1=imopen(I,SE1);%开运算函数,可以直接进行开运算:先腐蚀再膨胀
dif1=I-Iop1;
size2=x+2;%WTH加强亮细节,结构元大于亮细节尺寸
SE2=strel('square',size2);
Iop2=imopen(I,SE2);%开运算函数,可以直接进行开运算:先腐蚀再膨胀
dif2=I-Iop2;

dif=dif2-dif1;%留下(x+2)*(x+2)-x*x之间尺寸的粒子

% figure(1)
% subplot(1,3,1),imshow(I),title('原图');
% subplot(1,3,2),imshow(Iop),title('开运算函数');
% subplot(1,3,3),imshow(dif),title('亮区域粒子');

b=rgb2gray(dif);%绘制灰度直方图需要归一化成二值灰度图像
b1=b;
[m,n]=find(b1<20);%灰度阈值处理,留下差值更大的部分:小于20的阈值被置0(认为是大粒子的区域)
for i=1:size(m,1)
    b1(m(i),n(i))=0;
end
% figure(2)
% subplot(1,2,1),imshow(b);%筛选前
% subplot(1,2,2),imshow(b1);%筛选后

white_point_count=length(find(b1~=0));%计算不是黑色的像素点的个数
counts=white_point_count/(x+2)^2;

if counts==0 %如果不存在计数
    break
end
count=[count counts];
end

bar(3+2:2:(x-2)+2,count/sum(count))

参考:

小白学习图像处理——图像的形态学处理(MATLAB)

形态学图像处理

灰度图形态学运算知识点总结 gray-scale morphology

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值