MATLAB: How to solve “Error using .* Matrix dimensions must agree.”

filterimage processing

My code is to use Hormomorphic filtering.But i am having an error like matrix dimension must agree.I read many answers related to this but I don't understand how to apply it to my code. My image resolution size is 1935*2400.Is it the problem or how can i solve this problem?
I = imread('cephalogram.bmp');
I = im2double(I);
I = log(1 + I);
M = 2*size(I,1) + 1;
N = 2*size(I,2) + 1;
sigma = 10;
%create the high-pass filter…
[X, Y] = meshgrid(1:N,1:M);
centerX = ceil(N/2);
centerY = ceil(M/2);
gaussianNumerator = (X – centerX).^2 + (Y – centerY).^2;
H = exp(-gaussianNumerator./(2*sigma.^2));
H = 1 – H;
imshow(H,'InitialMagnification',25);
H = fftshift(H);
If = fft2(I, M, N);
Iout = real(ifft2(H.*If));
Iout = Iout(1:size(I,1),1:size(I,2));
Ihmf = exp(Iout) – 1;
imshowpair(I, Ihmf, 'montage');

Best Answer

We do not know if your inage is rgb (3 dimensions) or grayscale (2 dimensions)
You construct H to be nearly twice the size of the image but you expect to be able to do element by element multiplication between the two.