matlab怎么算每一个联通区域的像素点个数除以(长乘宽) 105
大神们帮一下啊。。。 展开
大致按照您的要求,进行了如下调试,如有不足欢迎继续提问:
代码如下:
******************************************
clear all;clc;close all;
I0=imread('E:\Matlab2010\math\3.1.jpg'); %图像读入
I1=rgb2gray(I0); %转换为灰度图
A=im2bw(I1); %转换为二值图
B=bwmorph(A,'spur',10); %形态学操作,去除毛刺
C=bwareaopen(B,1550); %滤除面积小于1550的区域,这个可调
%每一步图像输出
figure,imshow(A);
figure,imshow(B);
figure,imshow(C);
L=bwlabel(C); %标记连通区域
D=regionprops(L,'Area'); %提取各连通区域面积(像素总和)
[h,w]=size(C) %图片的大小h*w,生成一个向量
v=[D.Area] %将3个区域像面积存为1x3向量
SumArea=sum(v) %三个区域面积(像素和)相加
density=SumArea/(h*w) %像素总和处理长宽积得密度
************************************************************
运行结果:
h = 584
w = 1028
v = 49494 3965 1568
SumArea = 55027
density =0.0917
******************************************************
以下是截图: