matlab 白色像素点,MATLAB 簡單的計算白色輪廓中像素點的個數
近來,有朋友問到,如何計(jì)算白色輪廓中的像素點(diǎn)的個(gè)數(shù)。我在這里就舉一個(gè)超級(jí)簡單的例子,就是假設(shè)一副二值圖片,其背景是黑色的,而你的邊緣是白色的,而且你的白色邊緣中不包含黑色的點(diǎn),就如附件中的那個(gè)圖像。下面是一個(gè)簡單的計(jì)算輪廓包含起來的像素點(diǎn)的個(gè)數(shù)的程序:
%% step 1
clear all
clc
I=imread('test.bmp');%讀入圖片
bwI=im2bw(I,0.5);%轉(zhuǎn)化為二值圖像
L=bwlabel(bwI,4);%將四連通區(qū)域進(jìn)行標(biāo)記
[r,c]=find(L==1);%查找其中的白色區(qū)域,r是白點(diǎn)的所在行組成的向量,c是白點(diǎn)所在的列組成的向量
%% step 2 %去除r中重復(fù)的數(shù)
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;%輪廓中總的點(diǎn)的個(gè)數(shù)
for i=1:length(new_r)
n=find(bwI(new_r(i),:)==1);%查找有白點(diǎn)的行中白點(diǎn)所在的位置
if length(n)==1,continue;end%如果該行中只有一個(gè)白點(diǎn),則返回
num_zeros=n(end)-n(1)+1-length(n);%否則計(jì)算夾在白點(diǎn)之間的黑點(diǎn)的個(gè)數(shù)
sum_zeros=sum_zeros+num_zeros;
end
就是這樣的,比如這一行是這樣的001110000011100,那么step3中的n就是一個(gè)向量:3 4 5 11 12 13,這六個(gè)數(shù)分別是這行中白點(diǎn)的位置,那么其中的夾在1之間的0的個(gè)數(shù)就是:13-3+1-6=5 。我想這樣說你應(yīng)該能明白了。至於面積的計(jì)算方法有很多中方法,我就不說了。或者可以用個(gè)數(shù)來代替面積。
總結(jié)
以上是生活随笔為你收集整理的matlab 白色像素点,MATLAB 簡單的計算白色輪廓中像素點的個數的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 6 --- conve
- 下一篇: net应用程序中发生了未经处理的异常怎么