知道了目标区域的像素点怎么计算目标区域的面积?

2025-03-10 12:09:28
推荐回答(1个)
回答1:

下面是一个简单的计算轮廓包含起来的像素点的个数的程序:

%% step 1
clear all
clc
I=imread('test.bmp');%读入图片
bwI=im2bw(I,0.5);%转化为二值图像
L=bwlabel(bwI,4);%将四连通区域进行标记
[r,c]=find(L==1);%查找其中的白色区域,r是白点的所在行组成的向量,c是白点所在的列组成的向量
%% step 2 %去除r中重复的数
new_r=[];
for i=1:length(r)
nn=find(new_r==r(i));
if isempty(nn),new_r=[new_r r(i)];end
end
%% step 3
sum_zeros=0;%轮廓中总的点的个数
for i=1:length(new_r)
n=find(bwI(new_r(i),:)==1);%查找有白点的行中白点所在的位置
if length(n)==1,continue;end%如果该行中只有一个白点,则返回
num_zeros=n(end)-n(1)+1-length(n);%否则计算夹在白点之间的黑点的个数
sum_zeros=sum_zeros+num_zeros;
end

就是这样的,比如这一行是这样的001110000011100,那么step3中的n就是一个向量:3 4 5 11 12 13,这六个数分别是这行中白点的位置,那么其中的夹在1之间的0的个数就是:13-3+1-6=5 。