мне нужно сделать следующее для изображения в MATLAB:Обрезка изображения в MATLAB
- Загрузите изображения.
- вычислить FFT (быстрое преобразование Фурье) изображения.
- Компоненты частоты сдвига в центр.
- обрезайте изображение, как показано ниже (если разрешение изображения равно 1000x1000, необходимая часть изображения выглядит следующим образом: 100,100,800,800, что является меньшим изображением. (Идея применения фильтра для удаления высоких частот). .
- обратный сдвиг преобразования
- обратное Фурье
Мой код выглядит следующим образом:....
I = imread('2.jpg'); %loading
ID = im2double(I);
FID = fft2(ID); %FFT
F = fftshift(FID); %shifting
F = imcrop(F,[100, 100, 800, 800]);
FID = ifftshift(F); %inverse of shifting
IFID = ifft2(FID); %inverse of FFT
I8 = im2uint8(IFID);
Проблема заключается в том, когда я хочу, чтобы обрезать изображение, функция imcrop не может обрезать изображение типа «сложный двойной», так как я думаю ..
Ошибка:
Error using imcrop>checkCData (line 410) Invalid input image.
Error in imcrop>parseInputs (line 256) checkCData(a);
Error in imcrop (line 93) [x,y,a,cm,spatial_rect,h_image,placement_cancelled] = parseInputs(varargin{:});
Любой Помогите ? .. также есть и другая функция для обрезки?
Обратите внимание, что кадрирование изображения в частотной области будет также уменьшить размер изображение во временной области.Если вы просто хотите «удалить» компоненты высокой частоты, но сохраните одинаковый размер изображения, тогда вы можете отключить эти пиксели, а не просто удалять их. – SleuthEye
Это была моя старая идея, но я не смог ее применить, не могли бы вы мне помочь? –