#matlab
#matlab
Вопрос:
вот мой код, в котором у меня есть одна ошибка, касающаяся выхода индекса массива из привязки. пожалуйста, помогите мне исправить это
I = imread('E:degraded imagesvillage.jpg');
imshow(I)
I = im2double(I);
I = log(1 I);
M = 2*size(I,1) 1;
N = 2*size(I,2) 1;
sigma = 10;
[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)); ** here the code has error . ??? Error using ==> times Number of array dimensions must match for binary array op.**
Комментарии:
1. Вероятно, H и If не являются правильными размерами. Добавьте size (H) и size (If) прямо перед строкой, которая выдает ошибку, чтобы сначала узнать, каковы их размеры.
2. да, размер (h) = (617 * 819) и размер (если)= (617*819*3) .. как сделать их одинаковыми
Ответ №1:
H
является 2-D, а If
является 3-D. Вы можете использовать repmat
H
подмножество с или If
. Я не знаю, какой из них подходит для вашей ситуации. Например,
rempat( H, [1, 1, 3 ] ) .* If;
или
H .* If(:,:,ind); % ind is the index of the 2-D array you want to subset
Комментарии:
1. я хочу изменить размер H с 2d на 3d
2. @sheelumishra Затем используйте
repmat
, как в первом примере.