find out the percentage of pixels having value 1

조회 수: 1 (최근 30일)
Bhavini
Bhavini 2013년 6월 17일
Hi all,
I have a binary image (with values 0 & 1) of the dimensions 497*597. I want to calculate the fraction (%) of pixels with value 1 in each array of 3*3 pixels out of the full image. can anybody help me in this regard?
Any help is highly appriciated.
Thanks in advance
Bhavini
  댓글 수: 2
Jan
Jan 2013년 6월 17일
Do you mean overlapping blocks, such that the first one goes from 1 to 3, the 2nd one from 2 to 4? Or should the block be mutually distinct?
Bhavini
Bhavini 2013년 6월 17일
Dear Jan,
Yes the blocks must be overlapping, starting from 1 upto 595 horizontally and 1 to 495 vertically.

댓글을 달려면 로그인하십시오.

답변 (3개)

Andrei Bobrov
Andrei Bobrov 2013년 6월 17일
편집: Andrei Bobrov 2013년 6월 17일
a = randi([0 1],497,597);
ones_frac = conv2(a,ones(3),'valid')/9*100;
or if you have Image Processing Toolbox
ones_frac = blockproc(a,[3 3],@(x)sum(x.data(:))/9*100);

Bhomik Luthra
Bhomik Luthra 2013년 6월 17일
Lets take a random matrix of size 497*597. I have found the number of 1's in each 3*3 matrix in first horizontal row, u can do it for 497/3 rows by putting a for loop.
a = randint(497,597);
for i = 1:597/3
p(i)= length(find (a(1:3,3*i-2:3*i)==1))
end
p(i) returns the number of 1's in each 3*3 matrix.
Bhomik Luthra

Jan
Jan 2013년 6월 17일
For a binary image the percentage of 1's is the mean value multiplied by 100.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by