本文共 1058 字,大约阅读时间需要 3 分钟。
记一次作业,统计一张图上的粒子分布——利用白顶帽变换统计各个尺寸的结构元的频数,最终绘制直方图。
% 利用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:119size1=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 %如果不存在计数 breakendcount=[count counts];endbar(3+2:2:(x-2)+2,count/sum(count))
参考:
转载地址:http://psaii.baihongyu.com/