-
Notifications
You must be signed in to change notification settings - Fork 0
/
average_circle.m
56 lines (50 loc) · 1.31 KB
/
average_circle.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function [ im_new, avg_new ] = average_circle( image, center_pos, radius )
%Calculate the average value of the pixel values that lie inside
%a circle with radius=radius and center position=center_pos
im=double(image);
%%center already provides the inputs in reverse order!
pos_x=center_pos(1);
pos_y=center_pos(2);
count=0;
sum=0;
im_new=image;
for i=pos_x-radius: pos_x+radius
for j=pos_y-radius: pos_y+radius
if abs(sqrt((i-pos_x)^2 + (j-pos_y)^2))<radius
im(i,j);
sum=sum+im(i,j);
count=count+1;
pixel_list(count)=im(i,j);
%im_new(i,j)=255;
end
end
end
avg_new=sum/count;
disp(avg_new)
%avg;
%avg=uint8(avg);
%im_new=uint8(im_new);
total=0;
posn=0;
% for i=1:length(pixel_list)
% if abs(pixel_list(i)-avg_new)<=30
% posn=posn+1;
% b(posn)=pixel_list(i);
% total=total+b(posn);
% end
% end
sum=0;count=0;
for i=pos_x-radius: pos_x+radius
for j=pos_y-radius: pos_y+radius
if abs(sqrt((i-pos_x)^2 + (j-pos_y)^2))<radius && abs(im(i,j)-avg_new)<10
im(i,j);
sum=sum+im(i,j);
count=count+1;
pixel_list_new(count)=im(i,j);
im_new(i,j)=255;
end
end
end
disp(min(pixel_list))
disp(max(pixel_list))
avg_new=sum/count;