matlab 白色像素点,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 。我想這樣說你應該能明白了。至於面積的計算方法有很多中方法,我就不說了。或者可以用個數來代替面積。047905eb85177381a149a9532c5df7f3.jpe

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值