# How a binary image can be divided into four equal parts using loop ?

21 views (last 30 days)

Show older comments

##### 3 Comments

Image Analyst
on 25 Feb 2018

### Accepted Answer

John BG
on 24 Feb 2018

Edited: John BG
on 24 Feb 2018

Hi Zara Khan

I use a for loop to answer your question, as requested, and I have added the variable nq to count the amount of pixels in each quadrant, please have a look, attached script and start image that I have reshaped to 16:9 format, to be able to tell what size was vertical and what horizontal:

1.

start image

clear all;clc;close all

A=imread('im02.png');imshow(A)

.

2.

the for loop with the counting of pixels for each quadrant:

d2=size(A,2);

d1=size(A,1);

vert_bord=floor(d1/2)

horz_bord=floor(d2/2)

nq=[0 0 0 0]; % 1st: top left quadrant red

% 2nd: top right quadrant green

% 3rd: bottom left quadrant blue

% 4th: bottom right quadrant magenta

hold all

A1=A(:,:,1);

for k=1:1:d1*d2

[nk1 nk2]=ind2sub([d1 d2],k);

if nk1<vert_bord && nk2<horz_bord

if A1(nk1,nk2)==255

nq(1)=nq(1)+1;

plot(nk2,nk1,'r.');

end

end;

if nk1<vert_bord && nk2>horz_bord

if A1(nk1,nk2)==255

nq(2)=nq(2)+1;

plot(nk2,nk1,'g.');

end

end;

if nk1>vert_bord && nk2<horz_bord

if A1(nk1,nk2)==255

nq(3)=nq(3)+1;

plot(nk2,nk1,'b.');

end

end;

if nk1>vert_bord && nk2>horz_bord

if A1(nk1,nk2)==255

nq(4)=nq(4)+1;

plot(nk2,nk1,'m.');

end

end;

end

.

3.

resulting quadrants, coloring just to check the counting is correct

.

4.

the amount of white pixels in each quadrant is

nq

=

1007 1084 1235 1666

.

nq(1): top left quadrant, red.

nq(2): top right quadrant, green.

nq(3): bottom left quadrant, blue.

nq(4): bottom right quadrant, magenta.

.

Zara

if you find this answer useful would you please be so kind to consider marking my answer as Accepted Answer?

To any other reader, if you find this answer useful please consider clicking on the thumbs-up vote link

thanks in advance for time and attention

John BG

##### 15 Comments

### More Answers (2)

Guillaume
on 23 Feb 2018

Edited: Guillaume
on 23 Feb 2018

I'm not sure why or even how you'd use a loop.

[height, width, ncols] = size(yourimage);

splitimages = mat2cell(yourimage, [height height]/2, [width width]/2, ncols)

Your four images are splitimages{1}, splitimages{2}, splitimages{3}, and splitimages{4}.

To find the number of white pixels in each subimage:

numwhitepixels = cellfun(@(subimg) sum(sum(all(subimg == 1, 3))), splitimages); %assuming images of type double, where white == 1

edit: stupidly forgot the image argument to mat2cell!

sumaiya khan
on 7 Dec 2018

How can I diagnolly divide the image into 4 quadrants using the centroid of the blob ?

##### 0 Comments

### See Also

### Categories

### Products

### Community Treasure Hunt

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

Start Hunting!