博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MATLAB 简单的计算白色轮廓中像素点的个数
阅读量:2441 次
发布时间:2019-05-10

本文共 814 字,大约阅读时间需要 2 分钟。

MATLAB:简单的计算白色轮廓中的像素点的个数

近来,有朋友问到,如何计算白色轮廓中的像素点的个数。我在这里就举一个超级简单的例子,就是假设一副二值图片,其背景是黑色的,而你的边缘是白色的,而且你的白色边缘中不包含黑色的点,就如附件中的那个图像。下面是一个简单的计算轮廓包含起来的像素点的个数的程序:

%% 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 。我想这样说你应该能明白了。至于面积的计算方法有很多中方法,我就不说了。或者可以用个数来代替面积。

你可能感兴趣的文章
实用的小应用_使您的新应用更安全的实用提示
查看>>
小学生c语言编程入门教程_学生编程语言
查看>>
android mvp示例_Android深层链接示例
查看>>
Android RSS阅读器教程
查看>>
SkySilk –托管云服务提供商
查看>>
使用字典的Python HashMap实现
查看>>
流程图与算法_流程图与算法之间的区别
查看>>
wps宏的功能_宏与功能之间的区别
查看>>
while和do while循环之间的区别
查看>>
程序员连续剧_每个程序员都应该看的5部最佳电视连续剧
查看>>
tensorflow简介_TensorFlow简介
查看>>
矩阵 python 加法_Python矩阵加法
查看>>
python快速排序_Python快速排序
查看>>
人工神经网络导论_神经网络导论
查看>>
C ++ STL无序多集– std :: unordered_multiset
查看>>
深度学习导论
查看>>
go-back-n_iMyFone D-Back iPhone数据恢复
查看>>
MailboxValidator –批量电子邮件列表清理服务
查看>>
机器学习中常见的最优化算法_最常见的机器学习算法
查看>>
css图片和边框之间有间隔_CSS和CSS3之间的区别
查看>>