如何用matlab計算二值化圖中白色區域的畫素點個數

2021-03-23 22:28:44 字數 2664 閱讀 9576

1樓:乙個青年

計算原理如下:

假設一副二值**,其背景是黑色的,而邊緣是白色的,而且白色邊緣中不包含黑色的點,就如附件中的那個影象。

程式原始碼如下:

%% step 1

clear all

clci=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二值化圖例項如下(即黑白兩色):

擴充套件資料:

c語言實現原始碼:

#include "opencv2/highgui/highgui.hpp"

#include "opencv2/imgproc/imgproc.hpp"

#include "opencv2/core/core.hpp"

#include

#include

#include "cv.h"

#include "highgui.h"

#include

#include

#include

#include

using namespace std;

using namespace cv;

//統計一幅**中白色畫素點和黑色畫素點佔整幅圖的比例

int bsums(mat src)

else

}double bilib = counter * 1.0 / n * 1.0 * 100 * 1.0;

double bilih = black * 1.0 / n * 1.0 * 100 * 1.0;

cout << "counter:" << counter << endl;

cout << "black:" << black << endl;

cout << "n:" << n << endl;

cout << "bilib:" << bilib << endl;

cout << "bilih:" << bilih << endl;

return counter;

}int main(int agrc, char** agrv)

2樓:shine戚七七

下面是乙個簡單的計算輪廓包含起來的畫素點的個數的程式:

%% step 1

clear all

clci=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 。

3樓:匿名使用者

如何用matlab計算已知影象的熵

function entr yentropy a a uint8 a 這裡a為8位的單色影象或24為的rgb彩色影象 m n l size a entr 0 for k 1 l hi zeros 1,256 for i 1 m for j 1 n hi a i,j,k 1 hi a i,j,k 1 ...

如何用matlab解決這道題目,如何用matlab解決這道題目

a 0.04 0.04 0.12 0.56,1.56,0.32 0.24,1.24,0.28 y 3,1,0 x inv a y x就是結果。如何用matlab求解這道題目?求超線性方程組 rng b randi 10,3,1 a 1 1 1 1 1 2 x a b matlab 中 左除 會按照最...

如何用matlab畫二維sinc函式的影象

若能畫出類似下面那張圖就好了,希望能給出matlab完整語句 x 10 0.1 10 y sinc x plot x,y 用matlab實現圖上的sinc函式!非常感謝!用matlab實現圖上的sinc函式的 為t linspace 100,100 t0 2 a 1 t t t0 a y sinc ...