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

6 Ansichten (letzte 30 Tage)
Zara Khan am 23 Feb. 2018
Beantwortet: sumaiya khan am 7 Dez. 2018
I have a binary image . I want to divide this into 4 equal parts using a loop and want to store each part individually. later I want to find out the no of white pixels in each parts.
##### 3 Kommentare2 ältere Kommentare anzeigen2 ältere Kommentare ausblenden
Image Analyst am 25 Feb. 2018
OK, but does this mean that the center of the quadrants will be located at the center of the blob, or at the center of the image? And I presume that edges parallel with the edges of the image are okay? And that it's okay if each quadrant does not have the same number of pixels in it?

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

John BG am 24 Feb. 2018
Bearbeitet: John BG am 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 .
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
.
.
Zara
thanks in advance for time and attention
John BG
##### 15 Kommentare14 ältere Kommentare anzeigen14 ältere Kommentare ausblenden
Zara Khan am 26 Feb. 2018
Bearbeitet: Zara Khan am 26 Feb. 2018
Yes am new to this. The fact is the solution you provided me for my previous problem was ok. But am unable to find out the upper right image. Moreover your code is good with some of my dataset but not for all.as I have 1000 of data so most of the cases am not getting top like left ,right and bottom. So am facing problem. So I asked again if anyone can provide me any other solution . I hope you can link to my previous problem that was the one I accepted your answer.

Melden Sie sich an, um zu kommentieren.

### Weitere Antworten (2)

Guillaume am 23 Feb. 2018
Bearbeitet: Guillaume am 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!
##### 4 Kommentare3 ältere Kommentare anzeigen3 ältere Kommentare ausblenden
Zara Khan am 26 Feb. 2018
Like no. of white pixels calculation , will I be able to find out area of each cell using a single syntax only ??

Melden Sie sich an, um zu kommentieren.

sumaiya khan am 7 Dez. 2018
How can I diagnolly divide the image into 4 quadrants using the centroid of the blob ?
##### 0 Kommentare-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Kategorien

Find more on Get Started with Image Processing Toolbox in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!