# Find the center of specific picture area

10 views (last 30 days)

Show older comments

Hi, I'm quite new to Matlab.

I want to identify the center of a specific picture area.

In my case, I have 2 pictures which I determined the difference between each other (Subtraction). Resulting of a white area, marking the difference. Here's my problem, I cannot find roughly the center of my white area. Note that I have no error in the execution, just a problem with this calculus. Can someone help me with this please. Here's a sample of my code:

clear all; close all;

%Access to the pictures

[filename, pathname] = uigetfile({'*.jpg;*.tif;*.PNG;*.gif;*.bmp','All Image Files';...

'*.*','All Files' },'img1',...

'C:\Users\CAP\Desktop\SCHOOL\MATLAB\cible.jpg')

img1 = imread(filename);

if (length(size(img1))>2)

img1=img1(:,:,1);

end

[filename, pathname] = uigetfile({'*.jpg;*.tif;*.PNG;*.gif;*.bmp','All Image Files';...

'*.*','All Files' },'img2',...

'C:\Users\CAP\Desktop\SCHOOL\MATLAB\cibleref.jpg') image

img2 = imread(filename);

if (length(size(img2))>2)

img2=img2(:,:,1);

end

%Determination of the difference between the 2 pictures by Subtraction

[ligne colonne]=size(img1);

image_result=uint8(zeros(ligne,colonne));

for i = 1: ligne

for j = 1 : colonne

if img1(i,j)>=img2(i,j)

image_result(i,j)= img1(i,j)-img2(i,j);

else

image_result(i,j)= img2(i,j)-img1(i,j);

end

end

end

%Finding the coordinates of the white zone (difference)

[x,y]=find(image_result>128); %0:black 255:white

x1=(sum(x)/length(x)); %Trying here to figure out the center of my white area

y1=(sum(y)/length(y)); %Trying here to figure out the center of my white area

% Display

figure(1)

subplot(221)

imshow(img1)

subplot(222)

imshow(img2)

subplot(223)

imshow(image_result)

hold on;

plot(x1,y1,'r.','MarkerSize',20)

Top Right: Reference Image

Top Left: Image including difference

Bottom: Result image by subtraction. The Red dot corresponds to the result of my white zone determination. As you can see there is a sightly error in the calculus...

##### 0 Comments

### Accepted Answer

Hamoon
on 8 Sep 2015

That's because x1 refers to columns of the image and y1 refers to the rows of the image, so for plot you should write:

plot(y1,x1,'r.','MarkerSize',20)

in plot we first write rows and then columns: plot(rows,columns)

### More Answers (1)

Image Analyst
on 8 Sep 2015

##### 4 Comments

Sriram Badri
on 8 Sep 2015

If you could suggest a way to solve it, it would be really helpful. N thanks a lot

### See Also

### Community Treasure Hunt

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

Start Hunting!