Skip to content

Commit 83405f4

Browse files
Jason KlebesJason Klebes
Jason Klebes
authored and
Jason Klebes
committed
handling odd image sizes
1 parent b8f7252 commit 83405f4

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

bandpass.m

+16-8
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,17 @@
4242
if p.Results.filter=='butterworth'
4343
%construct Fourier space butterworth bandpass filter
4444
%same (usually square) size as image
45-
masksize_x = size(fourier_shifted,2); %switch dimensions in case no padding
46-
masksize_y = size(fourier_shifted,1);
45+
masksize_x = size(fourier_shifted,1);
46+
masksize_y = size(fourier_shifted,2);
4747
center_coord_x = floor(masksize_x/2)+1;
4848
center_coord_y = floor(masksize_y/2)+1;
4949
n=p.Results.butterworthN;
5050
mask=butterworthMask(masksize_x, masksize_y, low_cutoff, high_cutoff,n);
5151
elseif p.Results.filter=='hard'
5252
%construct hard cutoff Fourier space mask
5353
mask = zeros(size(fourier_shifted));
54-
masksize_x = size(mask,2);
55-
masksize_y = size(mask,1);
54+
masksize_x = size(mask,1);
55+
masksize_y = size(mask,2);
5656
center_coord_x = floor(masksize_x/2)+1;
5757
center_coord_y = floor(masksize_y/2)+1;
5858
for col = 1: masksize_y
@@ -84,8 +84,8 @@
8484
fourier_masked_shift = fftshift(fourier_masked);
8585
%transform back and cut away padding
8686
padded_image_out = real(ifft2(fourier_masked_shift));
87-
left_border = (masksize_x-image_size(1))/2;
88-
top_border = (masksize_y-image_size(2))/2;
87+
left_border = ceil((masksize_x-image_size(1))/2);
88+
top_border = ceil((masksize_y-image_size(2))/2);
8989
image_out= padded_image_out(left_border+1:left_border+image_size(1), ...
9090
top_border+1:top_border+image_size(2));
9191
end
@@ -133,8 +133,16 @@
133133
dims = size(image);
134134
maxdim = max(dims);
135135
i = ceil(log2(maxdim*1.5)); %TODO check
136-
N=i^2;
137-
image=padarray(image,[N/2, N/2], padding_opt);
136+
N=2^i;
137+
x_pad=N-dims(1);
138+
y_pad=N-dims(2);
139+
image=padarray(image,[ceil(x_pad/2), ceil(y_pad/2)], padding_opt);
140+
if mod(x_pad,2)==1
141+
image=image(1:end-1,:);
142+
end
143+
if mod(y_pad,2)==1
144+
image=image(:,1:end-1);
145+
end
138146
end
139147
end
140148
%else if argument is nonexistent, empty, or invalid option:

0 commit comments

Comments
 (0)