/normxcorr/trunk

To get this branch, use:
bzr branch http://suren.me/webbzr/normxcorr/trunk
1 by Suren A. Chilingaryan
Initial import
1
function rect = dic_calc_rects(xy,halfwidth,img)
2
3
% Calculate rectangles so imcrop will return image with xy coordinate inside center pixel
4
5
default_width = 2*halfwidth;
6
default_height = default_width;
7
8
% xy specifies center of rectangle, need upper left
9
upperleft = round(xy) - halfwidth;
10
11
% need to modify for pixels near edge of images
12
upper = upperleft(:,2);
13
left = upperleft(:,1);
14
lower = upper + default_height;
15
right = left + default_width;
16
width = default_width * ones(size(upper));
17
height = default_height * ones(size(upper));
18
19
% check edges for coordinates outside image
20
[upper,height] = adjust_lo_edge(upper,1,height);
21
[dum,height] = adjust_hi_edge(lower,size(img,1),height);
22
[left,width] = adjust_lo_edge(left,1,width);
23
[dum,width] = adjust_hi_edge(right,size(img,2),width);
24
25
% set width and height to zero when less than default size
26
iw = find(width<default_width);
27
ih = find(height<default_height);
28
idx = unique([iw; ih]);
29
width(idx) = 0;
30
height(idx) = 0;
31
32
rect = [left upper width height];
33
34
%-------------------------------
35
%
36
function [coordinates, breadth] = adjust_lo_edge(coordinates,edge,breadth)
37
38
indx = find( coordinates<edge );
39
if ~isempty(indx)
40
    breadth(indx) = breadth(indx) - abs(coordinates(indx)-edge);
41
    coordinates(indx) = edge;
42
end
43
44
%-------------------------------
45
%
46
function [coordinates, breadth] = adjust_hi_edge(coordinates,edge,breadth)
47
48
indx = find( coordinates>edge );
49
if ~isempty(indx)
50
    breadth(indx) = breadth(indx) - abs(coordinates(indx)-edge);
51
    coordinates(indx) = edge;
52
end